msg-tool

June 8, 2026 · View on GitHub

msg-tool is a command-line tool for exporting, importing, packing, and unpacking script files.

How to Compile

git clone https://github.com/lifegpc/msg-tool
cargo build --release  # Build with all features enabled
cargo build --release --no-default-features --features=circus  # Build with only specific features enabled. See supported types below.

Exit Codes

By default, msg-tool will always return exit code 0 unless a exit signal is received (such as Ctrl+C).
You can use the --exit-code / -x option to specify a non-zero exit code when some jobs failed.
If all jobs failed, you can use the --exit-code-all-failed / -X option to specify a different exit code.

Basic Usage

Extract messages from script files

msg-tool export <input> [output]

Some script files cannot be detected automatically. You can specify the type of script file with the --script-type / -t option.

msg-tool export -t <script-type> <input> [output]

If the script file is an image file, you can specify the output type of the image file with the --image-type / -i option.

msg-tool export -i webp <input> [output]

If the script file is an archive file, it will be unpacked and will try to extract messages/images/audio from the unpacked files. If you don't want to extract, please use the unpack command.

If the input is a directory, all script files in the directory will be processed. (The -r / --recursive option is needed if you want to process files in subdirectories.)

Import data into script files

msg-tool import <input> <output> <patched>

Pack files into an archive

msg-tool pack <input> -t <archive-type> [output]
# Pack multiple files/folders into an archive
# If output is not specified, the archive file will be named with the first input's name with the appropriate extension.
# Use --dep-file xxxx.d to generate a dep file for other build systems. (such as ninja)
msg-tool pack-v2 -t <archive-type> -o <output> <input1> <input2> ...

Unpack an archive file

msg-tool unpack <input> [output]

Some archive files cannot be detected automatically. You can specify the type of archive file with the --script-type / -t option.

Create a new script file

msg-tool create -t <script-type> <input> <output>

Supported Output Script Types

  • json - GalTransl's JSON format
  • m3t / m3ta - A simple text format that supports both original/llm/translated messages.
  • yaml - Same as json, but in YAML format.
  • po/pot - Gettext PO/POT format.

Supported Image Types

Image TypeFeature Name
pngimage (enabled automatically if any image script types are enabled)
jpgimage-jpg
webpimage-webp
jxlimage-jxl

Supported Script Types

Artemis Engine

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
artemisartemisArtemis Engine AST file (.ast)✔️✔️
artemis-asbartemisArtemis Engine ASB file (.asb/.iet)✔️✔️✔️✔️✔️For .iet files, only custom export/import and create features are supported.
artemis-txtartemisArtemis Engine TXT (General) script✔️✔️
artemis-panmimisoft-txtartemis-panmimisoftArtemis Engine TXT (ぱんみみそふと) file (.txt)✔️✔️
Archive TypeFeature NameNameUnpackPackRemarks
artemis-arc/pfsartemis-arcArtemis Engine archive file (.pfs)✔️✔️
artemis-pf2/pf2artemis-arcArtemis Engine Archive File (.pfs) (pf2)✔️✔️

Buriko General Interpreter / Ethornell

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
bgi/ethornellbgiBuriko General Interpreter/Ethornell Script✔️✔️✔️✔️Some old games' scripts cannot be detected automatically
bgi-bsi/ethornell-bsibgiBuriko General Interpreter/Ethornell BSI Script (._bsi)✔️✔️✔️
bgi-bp/ethornell-bpbgiBuriko General Interpreter/Ethornell BP Script (._bp)✔️✔️
bgi-dsc/ethornell-dscbgi-arcBuriko General Interpreter/Ethornell compressed file in archive✔️✔️✔️
Archive TypeFeature NameNameUnpackPackRemarks
bgi-arc-v1/ethornell-arc-v1bgi-arcBuriko General Interpreter/Ethornell Archive File Version 1 (.arc)✔️✔️
bgi-arc/bgi-arc-v2/ethornell-arc/ethornell-arc-v2bgi-arcBuriko General Interpreter/Ethornell Archive File Version 2 (.arc)✔️✔️
Audio TypeFeature NameNameExportImportCreateRemarks
bgi-audio/ethornell-audiobgi-audioBuriko General Interpreter/Ethornell Audio File (Ogg/Vorbis)✔️
Image TypeFeature NameNameExportImportExport MultipleImport MultipleCreateRemarks
bgi-img/ethornell-imgbgi-imgBuriko General Interpreter/Ethornell Uncompressed Image File✔️✔️✔️Image files in sysgrp.arc
bgi-cbg/ethornell-cbgbgi-imgBuriko General Interpreter/Ethornell Compressed Image File✔️✔️✔️V2 is not supported when importing/creating image

CatSystem2

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
cat-systemcat-systemCatSystem2 Scene Script File (.cst)✔️✔️
cat-system-cstlcat-systemCatSystem2 Scene I18N File (.cstl)✔️✔️✔️✔️✔️
Archive TypeFeature NameNameUnpackPackRemarks
cat-system-intcat-system-arcCatSystem2 Archive File (.int)✔️Encrypted archives are supported too. Use --cat-system-int-encrypt-password to specify password
Image TypeFeature NameNameExportImportExport MultipleImport MultipleCreateRemarks
cat-system-hg3cat-system-imgCatSystem2 HG3 Image File (.hg3)✔️✔️

Circus

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
circuscircusCircus Script File (.mes)✔️✔️Some scripts must use --circus-mes-type to specify game
Archive TypeFeature NameNameUnpackPackRemarks
circus-crmcircus-arcCircus Image Archive File (.crm)✔️
circus-datcircus-arcCircus Archive File (.dat)✔️
circus-pckcircus-arcCircus Archive File (.pck/.dat)✔️✔️
Audio TypeFeature NameNameExportImportCreateRemarks
circus-pcmcircus-audioCircus Audio File (.pcm)✔️
Image TypeFeature NameNameExportImportExport MultipleImport MultipleCreateRemarks
circus-crxcircus-imgCircus Image File (.crx)✔️✔️✔️V1 is not supported when importing/creating image
circus-crxdcircus-imgCircus Differential Image File (.crx)✔️

Emote

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
emote-psb/psbemote-imgEmote PSB File✔️✔️✔️
emote-pimgemote-imgEmote Multiple Image File (.pimg)✔️--emote-pimg-psd is required.
Image TypeFeature NameNameExportImportExport MultipleImport MultipleCreateRemarks
emote-pimg/pimgemote-imgEmote Multiple Image File (.pimg)✔️
emote-dref/drefemote-imgEmote DPAK-referenced Image File (.dref)✔️

Entis GLS engine

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
entis-glsentis-glsEntis GLS engine XML Script (.srcxml)✔️✔️
entis-gls-csxentis-glsEntis GLS engine CSX Script (.csx)✔️✔️✔️✔️✔️✔️

Escu:de

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
escudeescudeEscu:de Script File (.bin)✔️✔️
escude-listescudeEscu:de List File (.bin)✔️✔️✔️
Archive TypeFeature NameNameUnpackPackRemarks
escude-arcescude-arcEscu:de Archive File (.bin)✔️✔️

ExHibit

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
ex-hibitex-hibitExHibit Script File (.rld)✔️✔️✔️✔️
Archive TypeFeature NameNameUnpackPackRemarks
ex-hibit-grpex-hibit-arcExHibit GRP Archive File (.grp)✔️

Favorite

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
favoritefavoriteFavorite Hcb Script (.hcb)✔️✔️✔️

HexenHaus

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
hexen-haushexen-hausHexenHaus Script File (.bin)✔️✔️
Archive TypeFeature NameNameUnpackPackRemarks
hexen-haus-arcchexen-haus-arcHexenHaus Arcc Archive File (.arc)✔️
hexen-haus-odiohexen-haus-arcHexenHaus Audio Archive File (.bin)✔️
hexen-haus-waghexen-haus-arcHexenHaus Wag Archive File (.wag)✔️
Image TypeFeature NameNameExportImportExport MultipleImport MultipleCreateRemarks
hexen-haus-pnghexen-haus-imgHexenHaus PNG Image File (.png)✔️

Kirikiri

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
kirikiri/kr/kr-ks/kirikiri-kskirikiriKirikiri Script File (.ks)✔️✔️
kirikiri-scn/kr-scnkirikiriKirikiri Scene File (.scn)✔️✔️✔️✔️
kirikiri-simple-crypt/kr-simple-cryptkirikiriKirikiri Simple Crypt Text File✔️
kirikiri-mdf/kr-mdfkirikiriKirikiri Zlib-Compressed File✔️
kirikiri-tjs-ns0/kr-tjs-ns0kirikiriKirikiri TJS NS0 binary encoded script✔️✔️✔️
kirikiri-tjs2/kr-tjs2kirikiriKirikiri compiled TJS2 script✔️✔️✔️✔️
Archive TypeFeature NameNameUnpackPackRemarks
kirikiri-xp3/kr-xp3/xp3kirikiri-arcKirikiri XP3 Archive File (.xp3)✔️✔️
Image TypeFeature NameNameExportImportExport MultipleImport MultipleCreateRemarks
kirikiri-tlg/kr-tlgkirikiri-imgKirikiri TLG Image File (.tlg)✔️✔️✔️tlg6 is not supported when importing/creating image

Musica

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
musicamusicaMusica Script File (.sc)✔️✔️
Archive TypeFeature NameNameUnpackPackRemarks
musica-arcmusica-arcMusica Archive Resource File (.paz)✔️✔️

QLIE

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
qlieqlieQlie Engine Scenario script (.s)✔️✔️
qlie-abmp10 / qlie-abmp11 / qlie-abmp12qlie-imgQlie Abmp10/11/12 image (.b)✔️✔️✔️
qlie-dpngqlie-imgQlie tiled PNG image (.png)✔️✔️--qlie-dpng-psd is required.
Archive TypeFeature NameNameUnpackPackRemarks
qlie-packqlie-arcQlie Pack Archive (.pack)✔️✔️Currently only v3.1 are supported. --backslash are needed to correctly handle file paths when packing.
Image TypeFeature NameNameExportImportExport MultipleImport MultipleCreateRemarks
qlie-dpngqlie-imgQlie tiled PNG image (.png)✔️✔️

Silky Engine

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
silkysilkySilky Engine Mes Script File (.mes)✔️✔️
silky-mapsilkySilky Engine Map File (.map)✔️✔️✔️✔️✔️

Softpal

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
softpalsoftpalSoftpal Script File (.src)✔️✔️✔️✔️✔️
Archive TypeFeature NameNameUnpackPackRemarks
softpal-pacsoftpal-arcSoftpal Pac Archive File (.pac)✔️
softpal-pac-amusesoftpal-arcSoftpal Amuse Pac Archive File (.pac)✔️
Image TypeFeature NameNameExportImportExport MultipleImport MultipleCreateRemarks
softpal-pgd-ge/pgd-ge/pgdsoftpal-imgSoftpal PGD Ge Image File (.pgd)✔️✔️✔️
softpal-pgd3/softpal-pgd2/pgd3/pgd2softpal-imgSoftpal PGD Differential Image File (.pgd)✔️

WillPlus / AdvHD

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
will-plus-ws2/adv-hd-ws2will-plusWillPlus/AdvHD Script File (.ws2)✔️✔️
Image TypeFeature NameNameExportImportExport MultipleImport MultipleCreateRemarks
will-plus-wip/adv-hd-wipwill-plus-imgWillPlus/AdvHD WIP Image File (.wip)✔️✔️

Yaneurao Itufuru

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
yaneurao-itufuru/itufuruyaneurao-itufuruYaneurao Itufuru Script File✔️✔️
Archive TypeFeature NameNameUnpackPackRemarks
yaneurao-itufuru-arc/itufuru-arcyaneurao-itufuru-arcYaneurao Itufuru Archive File (.scd)✔️✔️

Yu-Ris

Script TypeFeature NameNameExportImportExport MultipleImport MultipleCustom ExportCustom ImportCreateRemarks
yuris-yscmyurisYu-Ris YSCM(opcodes metadata) file (.ybn)✔️
yuris-yseryurisYu-Ris YSER(error message) file (.ybn)✔️✔️✔️
yuris-yscfgyurisYu-Ris YSCFG(config) file (.ybn)✔️✔️✔️
yuris-ystbyurisYu-Ris YSTB(compiled script) file (.ybn)✔️✔️✔️✔️
yuris-txtyurisYu-Ris scenario text file (.txt)✔️✔️
yuris-ystlyurisYu-Ris YSTL(file list) file (.ybn)✔️✔️✔️
yuris-yslbyurisYu-Ris YSLB(labels) file (.ybn)✔️✔️✔️
yuris-ysvryurisYu-Ris YSVR(Variables) file (.ybn)✔️✔️✔️
yuris-ystdyurisYu-Ris YSTD(Global counts) file (.ybn)✔️✔️✔️
Archive TypeFeature NameNameUnpackPackRemarks
yuris-ypfyuris-arcYu-Ris Archive (.ypf)✔️✔️
Image TypeFeature NameNameExportImportExport MultipleImport MultipleCreateRemarks
yuris-ydgyuris-imgYU-RIS compressed image file (.ydg)✔️✔️✔️