3 PROGNAME
="$(basename $0)"
5 [ "$PWD" ] || PWD
=$
(pwd)
11 KLICENSE
="e4e54fd67c16c316f47829a30484d843"
12 PS2CLASSIC
=$PWD/ps2classic
/ps2classic
13 PSNPACKAGE
=$PWD/psn_package_npdrm
/psn_package_npdrm
18 function title
() { echo -e "\033[0;1m=== $* ===\033[0;0m"; }
19 function pass
() { echo -e "\033[1;32m$*\033[0;0m"; }
20 function warn
() { echo -e "\033[1;33m$*\033[0;0m"; }
21 function fail
() { echo -e "\033[1;31m$*\033[0;0m"; exit 1; }
27 [ -f .
$PROGNAME ] && source .
$PROGNAME
31 [ -f "$file" ] || fail
"can't find file"
32 file "$file" |
grep -q UDF || fail
"file is not an UDF iso"
35 serial
=$
(isoinfo
-f -i "$file" | \
36 grep "^/[A-Z][A-Z][A-Z][A-Z]_[0-9][0-9][0-9]\.[0-9][0-9];" | \
37 sed 's,[/.],,g;s,_,-,;s,;.*,,')
38 [ "$serial" ] ||
{ serial
=$
(printf "PS2U-1%04d" $id); let id
++; }
42 echo "id=$id" >> .
$PROGNAME
46 [ -f jlist2.html
] || wget https
://psxdatacenter.com
/psx
2/jlist2.html
47 [ -f plist2.html
] || wget https
://psxdatacenter.com
/psx
2/plist2.html
48 [ -f ulist2.html
] || wget https
://psxdatacenter.com
/psx
2/ulist2.html
50 getline; gsub(/<[^<]*>/, "")
59 [ -f "$CACHE/PS2-GAMEID-TITLE-MASTER.csv" ] ||
( cd "$CACHE"; wget https
://raw.githubusercontent.com
/VTSTech
/PS2-OPL-CFG
/master
/test
/PS2-GAMEID-TITLE-MASTER.csv
)
60 title
=$
(awk -F\
; '"'$serial'" == $1 {print $2}' "$CACHE/PS2-GAMEID-TITLE-MASTER.csv")
61 [ "$title" ] || title
=$
(basename "$file" |
sed 's/ *(.*//')
65 cid
=2P0001-
${serial/-}_00-$
(echo ${title}0000111122223333 | \
66 tr '[a-z]' '[A-Z]' | \
67 sed 's/[^A-Z0-9]//g;s/\(................\).*$/\1/')
72 echo "Serial: $serial"
73 echo "Title: '$title'"
77 title
"install skeleton"
79 tar -C $serial -xzf $PWD/skeleton.tgz
80 [ -d "$CACHE" ] || mkdir
"$CACHE"
85 # - PIC1.PNG 1920x1080
88 title
"get cover image"
89 if [ -f "$CACHE/$serial-ICON0.PNG" ]; then
90 cp "$CACHE/$serial-ICON0.PNG" $serial/ICON0.PNG
92 wget https
://psxdatacenter.com
/psx
2/images
2/covers
/$serial.jpg
93 if [ -f $serial.jpg
]; then
94 convert
$serial.jpg tmp.png
95 mogrify
-resize 320x176 tmp.png
96 mogrify
-background transparent
-gravity center
-extent 320x176 tmp.png
97 mv tmp.png
$serial/ICON0.PNG
99 cp $serial/ICON0.PNG
"$CACHE/$serial-ICON0.PNG"
101 warn
"can't find cover"
106 title
"get screenshot"
107 if [ -f "$CACHE/$serial-PIC0.PNG" ]; then
108 cp "$CACHE/$serial-PIC0.PNG" $serial/PIC0.PNG
111 find $HOME/.config
/PCSX
2/snaps
/ -type f |
xargs rm .
touch
113 capture
=$
(find $HOME/.config
/PCSX
2/snaps
/ -type f |
sort)
114 if [ "$capture" ]; then
115 cp "$capture" tmp.png
116 mogrify
-scale 1000x560 tmp.png
117 mogrify
-background transparent
-gravity center
-extent 1000x560 tmp.png
118 mv tmp.png
$serial/PIC0.PNG
119 cp $serial/PIC0.PNG
"$CACHE/$serial-PIC0.PNG"
121 warn
"can't find screenshot"
126 title
"create PARAM.SFO"
131 # - file: USRDIR/ISO.BIN.EDAT
133 echo -n $title | xxd | xxd
-r -s 0x120 - $serial/PARAM.SFO
134 echo -n ${serial/-} | xxd | xxd
-r -s 0x1a0 - $serial/PARAM.SFO
135 echo -n ${serial/-} | xxd | xxd
-r -s 0x17- $serial/USRDIR
/ISO.BIN.EDAT
139 dd bs
=1 count
=$
(expr ${#KLICENSE} / 2) if=/dev
/zero of
=$serial/ps2.key
140 echo "00000000 $KLICENSE" | xxd
-r - $serial/ps2.key
143 title
"find config file"
144 if [ ! -f "$CACHE/$serial.CONFIG" ]; then
145 confname
=$
(echo $serial |
sed 's/-/_/;s/_\(...\)/_\1./')
148 confname
=$confname.CONFIG
149 config
=$
(cd $CONFIGS; find NET GX SOFTCUSTOM
-name $confname |
head -1)
152 confname
=$confname.ENC
153 config
=$
(cd $CONFIGS; find ENC
-name $confname |
head -1)
156 if [ "$config" ]; then
157 cp $CONFIGS/$config "$CACHE/$serial.CONFIG"
160 [ -f "$CACHE/$serial.CONFIG" ] && cp "$CACHE/$serial.CONFIG" $serial/USRDIR
/CONFIG || warn
"can't find config"
162 # create package config
163 title
"create package config"
164 cat > $serial/package.conf
<< EOF
166 k_licensee = 0x$KLICENSE
168 Content_Type = PS2_Classics_Game
169 PackageVersion = 01.01
174 $PS2CLASSIC prepare
"$file" || fail
"can't prepare iso"
178 $PS2CLASSIC e cex
$serial/ps2.key
"$file" $serial/USRDIR
/ISO.BIN.ENC ISO.BIN.ENC
$cid || fail
"can't convert iso"
181 title
"create package"
182 $PSNPACKAGE $serial || fail
"can't create package"
183 mv $serial/$cid.pkg .
186 title
"create rap file"
187 cp $PWD/iso2ps2.rap
$cid.rap