Alejandro Muñoz Fernández Page

How to Apply the Emerald Dragon English Translation Patch on Linux

Emerald Dragon is one of the most notable cult RPGs that remained exclusive to the market of the land of the rising sun. Originally developed by Glodia and published for the PC Engine CD-ROM² in 1994, it stands out for its excellent soundtrack and a highly dynamic tactical combat system for its time.

I recently acquired an original physical copy for €29.94 on eBay from a Japanese seller. With an additional little gift my father paid upon delivery as a customs duty.

1. Prerequisites: Installing xdelta3

To apply the binary patch in .xdelta format, we will need the xdelta3 tool. You can install it from the terminal depending on your distribution:

On Debian and derivatives (Ubuntu / Mint):

sudo apt install xdelta3

On Fedora:

sudo dnf install xdelta3

On openSUSE:

sudo zypper install xdelta3

2. Downloading the Translation Patch

The English translation (version 1.0) is a project by Stargood Translations led by Supper, with the following contributions:

The current version of the patch (v1.0) can be obtained directly from the official Stargood project site (https://stargood.org/trans/emdr.php).

# Download the v1.0 patch
wget -c "[https://stargood.org/trans/files/Emerald%20Dragon%20EN%20](https://stargood.org/trans/files/Emerald%20Dragon%20EN%20)[v1.0].zip"

# Unzip
unzip "Emerald Dragon EN [v1.0].zip"

3. Preparation of the Game Files

This tutorial uses version 1.1 (Rev 1) of the original Japanese game (recommended). The process also works with Rev 0, but you must use the corresponding files and patch.

3.1. Extraction and Organization

Extract the game data (assuming you have them in a compressed 7z file):

7z e Emerald\ Dragon\ \(Japan\)\ \(Rev\ 1\).7z

Move the .bin files to the splitbin_patch folder to work in an organized manner:

mv *.bin splitbin_patch/

3.2. Directory Cleanup

It is advisable to delete unnecessary files (Windows executables and configuration files that we will not use in Linux) to avoid confusion:

rm -rf *.zip *.7z *.txt *.cue auto_patch Emerald\ Dragon\ \(Japan\)\ \(Rev\ 1\) redump_patch/*.exe redump_patch/*.cue redump_patch/Emerald\ Dragon\ EN\ \[v1.0-rev0\]\ Redump.xdelta splitbin_patch/*.bat splitbin_patch/xdelta3.exe

The resulting structure should be similar to this:

├── redump_patch
│   └── Emerald Dragon EN [v1.0-rev1] Redump.xdelta
└── splitbin_patch
    ├── Emerald Dragon EN [v1.0] SplitBin.cue
    ├── Emerald Dragon (Japan) (Rev 1) (Track 01).bin
    ├── ... (intermediate tracks)
    └── Emerald Dragon (Japan) (Rev 1) (Track 31).bin

4. Applying the Patch with a Bash Script

Since the original game consists of multiple tracks (split bin), the process requires concatenating the files, applying the patch, and then renaming the result. I have adapted the original .bat file to a native Bash script for Linux.

Create the file apply_patch.sh inside splitbin_patch:

#!/bin/bash
# ⚙️ Script to merge tracks of a PSX game (Emerald Dragon) and apply an XDelta patch
# 🧩 Converts individual binary tracks into a single bin + applies translation/fixes

# 🛡️ Robust configuration: exit on error, undefined variables, or pipeline failure
set -euo pipefail

# 📦 Variable definitions (easy to modify)
BASE_NAME="Emerald Dragon (Japan) (Rev 1)"
OUTPUT_NAME_UNPATCHED="Emerald Dragon EN [v1.0-rev1] SplitBin.bin"
PATCH_SOURCE="../redump_patch/Emerald Dragon EN [v1.0-rev1] Redump.xdelta"
OUTPUT_PATCHED_TEMP="Emerald Dragon EN [v1.0-rev1] SplitBin.bin_patched"
FINAL_BIN="Emerald Dragon EN [v1.0] SplitBin.bin"
CUE_FILE="Emerald Dragon EN [v1.0] SplitBin.cue"

# 🎵 Generate track list (01..31 with two-digit format)
TRACKS=()
for i in $(seq -w 1 31); do
    TRACKS+=( "${BASE_NAME} (Track $i).bin" )
done

# 🧹 Function to clean temporary file if it exists
clean_temp() {
    if [[ -f "$OUTPUT_NAME_UNPATCHED" ]]; then
        echo "🗑️ Deleting old temporary file: $OUTPUT_NAME_UNPATCHED"
        rm "$OUTPUT_NAME_UNPATCHED"
    fi
}

# ✅ Verify that the tracks exist and that xdelta3 is available
echo "🔍 Verifying requirements..."
if ! command -v xdelta3 &> /dev/null; then
    echo "❌ Error: xdelta3 is not installed. Install it with: sudo apt install xdelta3 (or equivalent)"
    exit 1
fi

for track in "${TRACKS[@]}"; do
    if [[ ! -f "$track" ]]; then
        echo "❌ Error: File $track not found"
        exit 1
    fi
done
echo "✅ All tracks exist and xdelta3 is installed."

# 1️⃣ Clean up possible remnants from previous executions
clean_temp

# 2️⃣ Merge all 31 tracks into a single bin (concatenation)
echo "🔗 Merging the 31 tracks into $OUTPUT_NAME_UNPATCHED ..."
cat "${TRACKS[@]}" > "$OUTPUT_NAME_UNPATCHED"
echo "✅ Merge completed."

# 3️⃣ Apply the xdelta3 patch
echo "🩹 Applying XDelta patch from $PATCH_SOURCE ..."
xdelta3 -d -s "$OUTPUT_NAME_UNPATCHED" "$PATCH_SOURCE" "$OUTPUT_PATCHED_TEMP"
echo "✅ Patch applied successfully."

# 4️⃣ Clean unpatched temporary file
clean_temp

# 5️⃣ Rename the patched file to the final name
echo "✏️ Renaming final result to $FINAL_BIN ..."
mv "$OUTPUT_PATCHED_TEMP" "$FINAL_BIN"

# 6️⃣ Check that the necessary CUE exists (optional but useful)
if [[ ! -f "$CUE_FILE" ]]; then
    echo "⚠️ Warning: Expected CUE file not found ($CUE_FILE)."
    echo "   Make sure you have it in the same folder for the game to work properly."
else
    echo "✅ CUE file found."
fi

# 🎉 Final message
echo "════════════════════════════════════════════════════════"
echo "✨ Process successfully completed! ✨"
echo "📁 Necessary files to play (in the current folder):"
echo "   🎮 $FINAL_BIN"
echo "   🎼 $CUE_FILE"
echo "════════════════════════════════════════════════════════"

Run the script:

chmod +x splitbin_patch/apply_patch.sh
cd splitbin_patch && ./apply_patch.sh

5. Conclusion and Execution

If everything went well, you will get two final files:

  1. Emerald Dragon EN [v1.0] SplitBin.bin

  2. Emerald Dragon EN [v1.0] SplitBin.cue

These files are ready to be loaded into emulators like Mednafen or RetroArch (Beetle PCE FAST core). Although I own the original hardware, current emulation offers unbeatable advantages: from resolution scaling to the convenience of playing on mobile devices. Considering that CRT (tube) televisions are today collector’s items and modern screens no longer natively integrate analog inputs, emulation is undoubtedly the best way to preserve and enjoy these gems.

This is what this PC Engine classic looks like with English texts:

Emerald Dragon: visual scene of Atrushan and Tamrin © 1994 Glodia / Alfa System

Emerald Dragon: White dragon © 1994 Glodia / Alfa System

Emerald Dragon: battle © 1994 Glodia / Alfa System

Emerald Dragon: title screen © 1994 Glodia / Alfa System

Emerald Dragon: city of Urvan © 1994 Glodia / Alfa System

Emerald Dragon: visual scene of Atrushan © 1994 Glodia / Alfa System

Emerald Dragon: Atrushan on Mount Diana © 1994 Glodia / Alfa System

Emerald Dragon: visual scene of the extinction of the dragons © 1994 Glodia / Alfa System

Emerald Dragon: Atrushan becomes human © 1994 Glodia / Alfa System

Emerald Dragon: Atrushan enters the necropolis of the dragons © 1994 Glodia / Alfa System

7. Credits

All images and screenshots incorporated in this article belong to the video game Emerald Dragon. This title was originally developed by Glodia and published for the PC Engine CD-ROM² system in 1994.

The graphic material is reproduced in this tutorial for strictly informational, educational, and technical review purposes, under the right of quotation established in the Spanish Intellectual Property Law (Art. 32.1). All copyrights and intellectual property of the original game belong to their respective legal creators and distributors.

Likewise, it is acknowledged that the English translation patch mentioned is a non-profit derivative work created by the fan project Stargood Translations. The credits for this translation go to Supper (hacking and translation), cccmar (editing and testing), and Oddoai-sama (testing). This article does not host or distribute unauthorized copies of commercial software.

Tags: