Snippets/Ps2EmuVmcConvert.sh

79 lines
42 KiB
Bash
Raw Normal View History

2023-10-14 23:30:08 +02:00
#!/bin/sh
set -e
Shell=sh
Script="$(realpath "$0")"
ArchiveName=mymc.tar.xz
Ps2VmcPath=/tmp/Ps2EmuVmcConvert/games.bin
EmuVmcPath=/tmp/Ps2EmuVmcConvert/games.ps2
TrySuperuser=false
2023-10-14 23:30:08 +02:00
# Script assumes shell path contains following commands and programs:
# sh [ mkdir realpath basename grep cut base64 tar xz python2.7 whoami sudo
2023-10-14 23:30:08 +02:00
# Exit when no valid option
[ "$1" != FromPs2ToEmu ] && [ "$1" != FromEmuToPs2 ] && { echo "Usage: $0 <FromPs2ToEmu|FromEmuToPs2>"; exit; }
# Ensure superuser if necessary
[ "${TrySuperuser}" = true ] && [ "$(whoami)" != root ] && { sudo "${Shell}" "${Script}" $@; exit; }
SuperDo(){ [ "${TrySuperuser}" = true ] && [ "$(whoami)" != root ] && sudo $@ || $@ ;}
2023-10-14 23:30:08 +02:00
# Extract mymc to a known reusable directory, if not already present
[ -z "${HOME}" ] && HOME=.
BinDir="${HOME}/.local/bin"
mkdir -p "${BinDir}"
if [ ! -d "${BinDir}/mymc" ]
then
OWD="${PWD}"
cd "${BinDir}"
grep "# FILE SECTION \`${ArchiveName}\` #" "${Script}" | cut -f3 -d"#" | cut -b2- | base64 -d | tar xJ
2023-10-14 23:30:08 +02:00
cd "${OWD}"
fi
# Optional overriding of VMC paths via CLI
if [ -n "$2" ] && [ -n "$3" ]
then
[ "$1" = FromPs2ToEmu ] && { Ps2VmcPath="$2"; EmuVmcPath="$3"; }
[ "$1" = FromEmuToPs2 ] && { EmuVmcPath="$2"; Ps2VmcPath="$3"; }
fi
# Setup some variables
mymc(){ python2.7 "${BinDir}/mymc/mymc.py" --ignore-ecc $@ ;}
Ps2VmcPath="$(SuperDo realpath "${Ps2VmcPath}")"
EmuVmcPath="$(SuperDo realpath "${EmuVmcPath}")"
2023-10-14 23:30:08 +02:00
[ "$1" = FromPs2ToEmu ] && { VmcFromPath="${Ps2VmcPath}"; VmcToPath="${EmuVmcPath}"; }
[ "$1" = FromEmuToPs2 ] && { VmcFromPath="${EmuVmcPath}"; VmcToPath="${Ps2VmcPath}"; }
# Ensure ready temporary directory and set us there
[ -z "${XDG_RUNTIME_DIR}" ] && XDG_RUNTIME_DIR="${HOME}/.local/tmp"
TmpDir="${XDG_RUNTIME_DIR}/Ps2EmuVmcConvert"
rm -rf "${TmpDir}" || true
mkdir -p "${TmpDir}/saves"
cd "${TmpDir}/saves"
# Copy files to act on them locally to avoid Android issues
#SuperDo cp "${VmcFromPath}" ../From.vmc
#SuperDo chmod +rw ../From.vmc
#SuperDo cp "${VmcToPath}" ../To.vmc
#SuperDo chmod +rw ../To.vmc
2023-10-14 23:30:08 +02:00
# Saves reading, conversion, and writing
#mymc ../From.vmc export "*"
2023-10-14 23:30:08 +02:00
mymc "${VmcFromPath}" export "*"
for Savefile in *.psu
do
Savename="$(basename "${Savefile}" .psu)"
mv "${Savefile}" "${Savename}"
done
#for Save in *; do { mymc ../To.vmc delete "${Save}" || true ;}; done
2023-10-14 23:30:08 +02:00
for Save in *; do { mymc "${VmcToPath}" delete "${Save}" || true ;}; done
for Save in *; do mv "${Save}" "${Save}.psu"; done
mymc "${VmcToPath}" import *
#mymc ../To.vmc import *
#cat ../To.vmc > "${VmcToPath}"
#SuperDo cp ../To.vmc "${VmcToPath}"
2023-10-14 23:30:08 +02:00
exit
# FILE SECTION `mymc.tar.xz` # /Td6WFoAAATm1rRGAgAhARYAAAB0L+Wj4i//dP5dADaeSd2lTrIDp42+Fp3zmIvZ0YfF90v4RDe6V9dEw4C5iVKEC9dWvKiWUncfvLGwY+1jfUx85+uPvbZw3WjT4DOk9yhTe57olXhCoW3PWKmYZ2jQ+rIeNLmFIB2RIcBOVRGskCytyXgl1XDgexeYLVdBQD7t1JBrLWQMta9c6g2mI8t12XREnVswbzPBhnEVUKn26CSDR1xyC4fXVZEdQHwm7bQn5uWojFK9Hy3qqlO8rGPFy96lpeuG5JTkplT4cYTa/By+UurOkU4hFNwjujvCW4GaFwKs/icBkWKMRB5bPpHtNSaNNnCB1yIsTLsUcixpfaszPp66JmLG8S9qSZz/JcDNMV6+LQiJfGeZRAa7wdNaG9eqPFhwd2Orb0mYXGcw0BpYGpnB9wdyJsmcMZU5kKMbri1R1OnBDj+GIoF4eCjmhn+rdNUDKZFp/4VOKPzJ1NDHxg/TyougxoFleni5O1KKVeKgR6uOEVhl88f0NImFEHSe+AUTgrD9WfgxGVSxkFVLSE8Ciobvjzb/FR/WLTKcPgMkTdeqnMCeZ0+PusMlz0mbmmzuRXYvjW5VnJkylDgGv/Z7NvlYTZxzdkKAhhWfLWMICVou0HVAnJr1tyCbS6JKavhLXYlKo9s2l4bYCs2FK1QWCwNNyoxzwCPk6D12BAIjoy3Pgaj7dns9/S18QD7QQnJX86sb98EZHETJQPQPLliSTX+a5oeuCyONULjgEKL0qVNqLPv1sBZ3TbhemHuWVs0K9TG+ve42KQsQk+qdgBTOyTp/Jjpdu0dvw0J7fDtM4hGHfpUStARrHOv0oBvmgATDm4AgbyBptrNtMl3BUdLhnIP8f+MNd8DgiJAo+QUgWDhGfEYry/nNRJMPGcbPS9LPdAcS3np5/KqvoxzEtq0ebcbdwcwVxJQGGUMpgsvNMORScMzk0fBi7lSaS3FLeduk/HaVdpSTacTOej6eb7QRB2m1Qq15khdtOoG7J8qwG9QypQOdNzJ7iAQA95F0IMuQwrZqjPZYA2j9/DDsr/lM8um8RzLBMUUjKMGwjgAEUZNiy5GxdXbw5uoNJqkP1vEADPIwvEbZEsMA8vuiLYaiP4zyXsF4cyVMzl6u9IxiUk0astYrEtTOZ+hDtYP5sGLDznpQM6oB3XZUDGXu926Df74rZWUpQIkj9U4JQdxqz5ClRB6mAr+dsNaacbXL26wJsC0x+cxKbGnzgBxv0KXKX/jwUyR8nQroOsN9gKmxIR5viluLcR7IIXXIYv/9VHClM3A6snwccvB76LsRXiDd6wAz44UivTQ0xjNORJm8AKMsWVA7A65Fpf/+HRjqj7OTh5PYfA1KeSeGo/gPwAigrEfE6Hdofpsh+SEgt/On+5OoTDn1O+H9N0zt91lWLels+g9WGs8/n51jNxs5CNH+7imyxIDcmEsGZYSqQjVC/rWKV4Je72jfdIump/daI/HYluf90USEgj/jrAoJbQ6tuC70uh4ki1gs5EM1X4/LVGo5bxNdFjnmOp0AWBSjJri/CGItY0Uk7YOTtuAO96tzvb4OjJVfb68kikLSiQTsJMAvYUp3Y9xP317fZOXAymfBdtGeISPxIQKS2L1NfIeZvISr9r1vbLPQ+YoALTweIGNGSTXU9v3Pjdvil8V+0QsJVag/4nlpOuvuHUPnEQ09n3N8eFnJyeMpaQkAmnvRwz291XQDWoBlTL3V6+888GRFlSHrqjN2uq7yqFtAPlzQlmXeeM0+409FWa+WjPzTQHYUf8oUQhI4LlRbK8siI56r9HhqerxGYLDz+7VAkjYO1uAvudg20MOnqHzP9gert+6/w1rmJIuKF9zL1dzW9wGDyGANFdT+zxJRqlhgiSO0cxHi0XKh5NJkH+SH1fyFMHGwa/NCadSGyPc4/4zdcr03+f10BczvvOXxapTwMEDhkMef0M0V10VDuAV3/u+PKu4v6DGTdYMEInlEqakymjKl+54wHsMOtmOW2H6XCVOAQWrdhAENDmGV8sd773pILUaL2Ox1fny32JR6Xndfb/taTish9GpdkrnW06WkbTGkV2qtodXeRS3h1aUEJCDHtABWw7RFmIkePJsI85w3JfM5DRHegV2aGz9iAldE0cXqgY5emMKRkVVZf00Di+kyP5EOskL45kxYICV8uFmfqGgE3QqlFEg7pTX/NdT3ZDd+C5KVONIfYm6Z42jVg28OXVx/omkCcjf5ex7urHgk5SeHSExLAlSoMNIJjw3a0jpdPq5SMqKWOz51xEsVcs7wH+Q+49Ho/TDpWN3pT9gHD+aMyrsROKuEL7XJI+SUdVEUKEUisr+b2N+/+j6PhOKhN1FxN3pOxMP5DBSElzJxqsO8FRXuTq6b+DTce4oOuWpUseIpfVhmtV4Su5KEY8urwz5IhCatp1FGxZCe0k1kP7z5wLfKMyo4SLr9SBm2Oisq19ahdPEQnZp4mgGU3VaMbIUKYWQENVjOlXugj32jvhNuHoSPeNf5RgstIcMOeF4S9HLTj8ciBsJlHD+pmm4jPXUJsY0gKtGv+DWG8ZKHzqyqfIdHKElNk48Qzs6IEVtnKstg2QWBWYWGVnfumcW2LE5WxDCCZ1HPVoUFOjkbWSFvlwwNgfUC7gEUrbO3aXiM2EhVO0OED+cTfRWwfXah01LnVEc64A1fSHPwYuk7Xn6X+3dLk9I0kc5zUsM1kr3g3U1WAr4FfxvImoh8JiaWWqa+STFEw7DAwyiEtYA1b6S8T2O1CWQxHKUICzBE88hnrTzG+gSMFysTsNggKwPaWM+2jIP8Uj7RhbnT7zk6O8s2Epjw6IrAMmYt4T85F7gV/rcxPXRdtUUIbbz18+ewt6PPjM4S6Dy+BSt954jXYk/XxjiXX9VQnpqTjx5hqBOOFOQVjog3X1++94UtFSQ5VmYpeQFrdbN/j19+vZS6HxVRq4NmoKGLZow5bCNrKqW25T/3BqcpUBkcsJscceKzdZV6OeO1GWsGRsewv3M7DN5L5toulVukyIzUbf2kUSeZLkEalcexaC2K9UkTuP+Usx9iv8qLttZ85ywnoevRae7bkaHKrGmM8IaKl/2af38hTGgCZEzsACLMO2BjpzBDkJHTp3F9T7tB9slyV+ryZbes2GsF6eqp5AtEe7fXE7xVBgUEtVf4oVEhKL41qiRBvU2o24ow/qKVBE4jW/I87EmIsp2gjqKovjc7Nul/wjQOfULcXsIe5X3VphofQT7tG6aAJziSfZBnB7O0Az7jHc0SyOYUU5oJlX7rPrI43ixqr0YlufvwtkYW75jLGwe68GWG6vFJvh7o16iBWbblbqQR7lPMEQQXl6fFHbi7lOugkNHabUlVT1mK6zjMVEOfBzDs+MzWwe3d9iEt0sVEnHqJvxU0nzaIm64/3ruw9t75Dp/3bJZkANpTpBzJBtGx9BP8kYNt35xw8bJu+nUNi3Ql7bV+YD6l8700y0OP2Jo8xjk02U6jZ0JeNo6w01/liqklWg7+Rou0ODEoPLBt4w9RJJZYU2kbAO4LDeqDPfa/98nbAwrmk/juSlevHry1skeaaAqLZ57mxzRbHEryNGX2jOIoAFtybT0bpLwRUC6+UTN5+e95PKUuLZMDkeZyrYnc1xhG7CQ9nG94b2MAkSrJLQjb1DtY5FDgRJgCRiw+U3DkKjjHoWbqmfXL9Rp3EIONawqpkDT4jeEb46xeuf5PxcBZzjJzMm6lmGEru3/zlbDBDDNOImQVxYv7P/6aLT7wn/39TsG8gjdjjFouSLDFu8sqLYTu7TslXhIDOKDi3lI1EvQpW7GVc3I0s2E7vmt5lljSc8vIeT/3ZCX3UikoxWqZdmNzrL0alh9OWCTbrux0qdyb8v1D47lfl+FSc4P405u080UWjOAxta/ukjdAv5y1nw98lBR0/o6MGaCpjnxQiJO2caoaFtxYVn8iudmo7L1Cx7BUEhWfRrwUvszFFKVnpPqsyENbwi2U+TbulGsy8sbDabHNcVmEIJC5LRDwy7cPC8WEhDSO+sRW8X2h