RetroPie で ONScripter の一括登録

 GPiCASE の RetroPie に ONScripter のゲームをコピーしました。結構ありましたが作業的には機械的な作業なので、SHELL スクリプトで一括登録できるようにしました。

 登録する名前とかは、ディレクトリ名で登録することにすれば、作業内容はほとんど一緒になります。

 以下のような SHELL スクリプトになります。

#!/bin/bash

exec="sudo /usr/local/bin/onscripter"
em_dir="/opt/retropie/configs/ports"

add_ports() {
    cmd=$1
    dir=$2
    base=${PWD}

    echo "make ${base}/${cmd}"
    echo "#!/bin/bash" > "${cmd}"
    echo "" >> "${cmd}"
    echo "\"/opt/retropie/supplementary/runcommand/runcommand.sh\" 0 _PORT_ \"${dir}\" \"\"" >> "${cmd}"
    if [ ! -d "${em_dir}/${dir}" ]; then
        mkdir "${em_dir}/${dir}"
    fi
    title=$(echo "${dir}" | tr " " "_")
    edir=$(echo "${dir}" | sed -e 's/ /\\ /g' -e 's/(/\\(/g' -e 's/)/\\)/g')
    echo "make ${em_dir}/${dir}/emulators.cfg"
    echo "${title} = \"pushd ${base}/${edir}; ${exec}; popd\"" > "${em_dir}/${dir}/emulators.cfg"
    echo "default = \"${title}\"" >> "${em_dir}/${dir}/emulators.cfg"
}

search_dir() {
    for dir in *
    do
        if [ -d "${dir}" ]; then
            if [ -f "${dir}/arc.nsa" -o -f "${dir}/arc.sar" -o -f "${dir}/0.txt" -o -f "${dir}/nscript.dat" ]; then
                cmd="${dir}.sh"
                if [ ! -f "${cmd}" ]; then
                    add_ports "${cmd}" "${dir}"
                fi
            else
                cd "${dir}"
                search_dir
                cd ..
            fi
        fi
    done
}

cd ~/RetroPie/roms/ports
search_dir

 ~/RetroPie/roms/ports にあるディレクトリを対象に、ゲームデータがあれば登録して、無ければ再帰的に辿ります。既に起動用の .sh ファイルがあれば登録済みとしてスキップします。

 GPiCASE にコピーした ONSCripter のゲームを一気に登録することができました。

 起動コマンドや、ファイルのチェックを変えれば、ONScripter 以外でも使えると思いますが、今の所、一気に登録したいゲームデータがあるのは ONScripter だけです。

 また、起動コマンドが sudo /usr/local/bin/onscripter になっているのは、アクセス権の関係か pi ユーザでは起動できなかったので、sudo コマンドを通して ONScripter を起動しています。

GPiCASE,RetroPie

Posted by sirius