mirror of
https://github.com/CosmicScale/PSBBN-Definitive-English-Patch.git
synced 2025-07-25 03:37:25 +02:00

- Bypass boot ELF security check; custom kernels now supported - Swap X/O buttons (X=Enter, O=Back) - Add DVD remote support in Music and Movie channels - Update BB Guide: reflect button swap, game collection changes, and more - Improve update process: no USB keyboard required after this version - Allow custom POPS partition size in installer - Add support for multi-disc PS1 games with auto-generated DISCS.TXT and shared VMCs - Add VMC Groups (shared saves for compatible PS1 games) - Improve VMC display: custom icons and clearer titles in Browser 2.0 - Generate HDD-OSD icons automatically using OPL art or game logos - Contribute new icons to HDD-OSD icon database and report missing ones - Improve Game ID detection in list-builder.py for non-standard PS1/PS2 titles - Update Neutrino to v1.7.0 - Update OPL to v1.2.0 Beta-2210-6b300b0 (adds VMC Group support) - Upgrade wLaunchELF to v4.43x_isr (adds exFAT + MMCE support)
154 lines
4.7 KiB
Bash
Executable File
154 lines
4.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
version="2.0"
|
|
help="PS2 Icon Maker v$version
|
|
|
|
Usage: ps2iconmaker <gameid> [-t icon type] [-?]
|
|
|
|
[-t icon type]: type of icon to generate
|
|
1 - PS2 DVD NTSC case
|
|
2 - PS2 DVD PAL case
|
|
3 - PS1 CD USA case
|
|
4 - PS1 CD USA Greatest Hits case
|
|
5 - PS1 JPN case
|
|
6 - PS1 PAL case
|
|
7 - PS1 multi-disc case
|
|
8 - PS1 virtual memory card
|
|
[-?]: shows this help
|
|
|
|
If an icon type is not given, a PS2 DVD NTSC case icon will be generated"
|
|
|
|
template_path="./assets/Icon-templates"
|
|
image_path="./icons/ico/tmp"
|
|
|
|
if [ -z $1 ]; then
|
|
echo "$help"
|
|
exit 0
|
|
else
|
|
input="$1"
|
|
fi
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
-t)
|
|
type="$2"
|
|
shift
|
|
;;
|
|
-?)
|
|
echo "$help"
|
|
exit 0
|
|
;;
|
|
*)
|
|
args+=("$1")
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
case $type in
|
|
1)
|
|
icon="${template_path}/ps2dvdicon.icn"
|
|
template="${template_path}/PS2-NTSC.bmp"
|
|
;;
|
|
2)
|
|
icon="${template_path}/ps2dvdicon.icn"
|
|
template="${template_path}/PS2-PAL.bmp"
|
|
;;
|
|
3)
|
|
icon="${template_path}/ps1cdusicon.icn"
|
|
template="${template_path}/PS1-USA.bmp"
|
|
;;
|
|
4)
|
|
icon="${template_path}/ps1cdusicon.icn"
|
|
template="${template_path}/PS1-USA-GH.bmp"
|
|
;;
|
|
5)
|
|
icon="${template_path}/ps1cdpaljpicon.icn"
|
|
template="${template_path}/PS1-JPN.bmp"
|
|
;;
|
|
6)
|
|
icon="${template_path}/ps1cdpaljpicon.icn"
|
|
template="${template_path}/PS1-PAL.bmp"
|
|
;;
|
|
7)
|
|
icon="${template_path}/ps1multidiscicon.icn"
|
|
template="${template_path}/PS1-MULTI.bmp"
|
|
;;
|
|
8)
|
|
icon="${template_path}/VMC.icn"
|
|
template="${template_path}/VMC.png"
|
|
;;
|
|
*)
|
|
type="1"
|
|
icon="${template_path}/ps2dvdicon.icn"
|
|
template="${template_path}/PS2-NTSC.bmp"
|
|
;;
|
|
esac
|
|
|
|
if ! command -v convert > /dev/null 2>&1 ; then
|
|
echo "convert not found."
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$type" -eq 1 ] || [ "$type" -eq 2 ]; then
|
|
convert $template \
|
|
\( "${image_path}/${input}_COV.png" -resize 63x90\! \) -geometry +0+2 -composite \
|
|
\( "${image_path}/${input}_COV2.png" -resize 63x90\! \) -geometry +65+2 -composite \
|
|
\( "${image_path}/${input}_LAB.png" -resize 7x90 -rotate 90 \) -geometry +20+98 -composite \
|
|
"${image_path}/temp.bmp" > /dev/null 2>&1
|
|
elif [ "$type" -eq 3 ] || [ "$type" -eq 4 ]; then
|
|
convert $template \
|
|
\( "${image_path}/${input}_COV.png" -resize 62x62\! \) -geometry +8+1 -composite \
|
|
\( "${image_path}/${input}_COV2.png" -resize 69x63\! \) -geometry +1+64 -composite \
|
|
\( "${image_path}/${input}_LAB.png" -resize 4x63\! \) -geometry +93+58 -composite \
|
|
"${image_path}/temp.bmp" > /dev/null 2>&1
|
|
elif [ "$type" -eq 5 ] || [ "$type" -eq 6 ]; then
|
|
convert $template \
|
|
\( "${image_path}/${input}_COV.png" -resize 62x62\! \) -geometry +8+1 -composite \
|
|
\( "${image_path}/${input}_COV2.png" -resize 69x63\! \) -geometry +1+64 -composite \
|
|
\( "${image_path}/${input}_LAB.png" -resize 6x63\! \) -geometry +93+58 -composite \
|
|
"${image_path}/temp.bmp" > /dev/null 2>&1
|
|
elif [ "$type" -eq 7 ]; then
|
|
convert $template \
|
|
\( "${image_path}/${input}_COV.png" -resize 69x62\! \) -geometry +1+1 -composite \
|
|
\( "${image_path}/${input}_COV2.png" -resize 69x62\! \) -geometry +1+64 -composite \
|
|
\( "${image_path}/${input}_LAB.png" -resize 4x62\! \) -geometry +71+1 -composite \
|
|
\( "${image_path}/${input}_LAB.png" -resize 4x62\! \) -geometry +78+1 -composite \
|
|
\( "${image_path}/${input}_LAB.png" -resize 4x62\! \) -geometry +71+64 -composite \
|
|
\( "${image_path}/${input}_LAB.png" -resize 4x62\! \) -geometry +79+64 -composite \
|
|
"${image_path}/temp.bmp" > /dev/null 2>&1
|
|
elif [ "$type" -eq 8 ]; then
|
|
convert $template \
|
|
\( "${image_path}/${input}_LGO.png" \) -geometry +169+283 -composite \
|
|
"${image_path}/temp.png" > /dev/null 2>&1
|
|
convert "${image_path}/temp.png" -resize 128x128 -rotate 180 "${image_path}/temp.bmp"
|
|
fi
|
|
|
|
convert "${image_path}/temp.bmp" \
|
|
-flip \
|
|
-separate +channel \
|
|
-swap 0,2 \
|
|
-combine \
|
|
-alpha off \
|
|
-define bmp:format=bmp4 \
|
|
-define bmp:subtype=RGB555 \
|
|
"${image_path}/temp.bmp"
|
|
|
|
dd bs=1 if="${image_path}/temp.bmp" of="${image_path}/temp.tex" skip=138 count=32768 iflag=skip_bytes,count_bytes > /dev/null 2>&1 &&
|
|
|
|
if [ "$type" -eq 8 ]; then
|
|
cat "$icon" "${image_path}/temp.tex" > "${image_path}/vmc/$input.ico"
|
|
else
|
|
cat "$icon" "${image_path}/temp.tex" > "${image_path}/$input.ico"
|
|
fi
|
|
|
|
if [ -s "${image_path}/$input.ico" ] || [ -s "${image_path}/vmc/$input.ico" ]; then
|
|
rm "${image_path}/temp.bmp" "${image_path}/temp.png" "${image_path}/temp.tex" > /dev/null 2>&1 &&
|
|
echo
|
|
echo "Icon created sucessfully!"
|
|
exit 0
|
|
else
|
|
echo
|
|
echo "Error: failed to create icon for $input."
|
|
exit 1
|
|
fi |