Skip to content

PlayStation 1

I play PS1 games on an Anbernic RG-476H using DuckStation as the emulator.

Anbernic RG-476H

Spec Detail
Screen 4.7" LTPS, 1280x960 (4:3), 120 Hz, 340 PPI
OS Android 13
Connectivity WiFi 5, Bluetooth 5.0
Controls Hall effect analog sticks, L1/R1/L2/R2 shoulder buttons, touchscreen, gyroscope
Audio Stereo speakers, 3.5mm jack
Dimensions 176 x 86 x 16 mm
Weight 290 g

AI Translation

The RG-476H has a built-in AI translation feature that can parse text displayed on screen and overlay a translation in real time. This is particularly useful for playing Japanese PS1 games. The OCR and translation processing is handled by Anbernic's cloud services hosted in China.

Warning

This feature requires an active internet connection and sends screen content to Anbernic's servers in China for processing.

Converting Games to CHD

PS1 games are often distributed as CUE/BIN files inside 7z archives. I convert them to CHD (Compressed Hunks of Data) format, which combines all tracks into a single compressed file that DuckStation reads natively.

The following script extracts 7z archives and converts the CUE/BIN files to CHD using chdman (from the MAME tools package):

convert-7z-to-chd.sh
#!/bin/bash

# Script to extract 7z archives and convert PS1 CUE/BIN to CHD format
# Usage: ./convert-7z-to-chd.sh [directory]
# If no directory is provided, uses current directory

set -e

# Use provided directory or current directory
TARGET_DIR="${1:-.}"
cd "$TARGET_DIR"

echo "=========================================="
echo "7z to CHD Converter for PS1 Games"
echo "=========================================="
echo "Working directory: $(pwd)"
echo ""

# Count 7z files
TOTAL_7Z=$(find . -maxdepth 1 -name "*.7z" -type f | wc -l)

if [ "$TOTAL_7Z" -eq 0 ]; then
    echo "No .7z files found in directory."
else
    echo "Found $TOTAL_7Z .7z archive(s) to extract"
    echo ""

    # Extract all 7z files
    COUNT=0
    for file in *.7z; do
        if [ -f "$file" ]; then
            COUNT=$((COUNT + 1))
            echo "[$COUNT/$TOTAL_7Z] Extracting: $file"
            7z x -y "$file" > /dev/null
        fi
    done
    echo ""
fi

# Convert CUE files to CHD
echo "Searching for CUE files to convert..."
TOTAL_CUE=0
CONVERTED=0
SKIPPED=0

# Count total CUE files
for dir in */; do
    if [ -d "$dir" ]; then
        TOTAL_CUE=$((TOTAL_CUE + $(find "$dir" -maxdepth 1 -name "*.cue" -type f | wc -l)))
    fi
done

if [ "$TOTAL_CUE" -eq 0 ]; then
    echo "No CUE files found to convert."
    exit 0
fi

echo "Found $TOTAL_CUE CUE file(s) to convert"
echo ""

# Convert each CUE file to CHD
CURRENT=0
for dir in */; do
    if [ -d "$dir" ]; then
        cd "$dir"
        for cuefile in *.cue; do
            if [ -f "$cuefile" ]; then
                CURRENT=$((CURRENT + 1))
                base="${cuefile%.cue}"

                if [ -f "$base.chd" ]; then
                    echo "[$CURRENT/$TOTAL_CUE] Skipping: $base (CHD already exists)"
                    SKIPPED=$((SKIPPED + 1))
                else
                    echo "[$CURRENT/$TOTAL_CUE] Converting: $base"
                    if chdman createcd -i "$cuefile" -o "$base.chd" 2>&1 | grep -q "Compression complete"; then
                        CONVERTED=$((CONVERTED + 1))
                        echo "    ✓ Success"
                    else
                        echo "    ✗ Failed"
                    fi
                fi
            fi
        done
        cd ..
    fi
done

echo ""
echo "=========================================="
echo "Conversion Complete!"
echo "=========================================="
echo "Converted: $CONVERTED"
echo "Skipped:   $SKIPPED"
echo "Total:     $TOTAL_CUE"
echo ""
echo "CHD files are ready for DuckStation!"

Prerequisites

Install p7zip and mame-tools (provides chdman) on Arch Linux:

Install dependencies
sudo pacman -S p7zip mame-tools