diff --git a/dist-scripts/wiiu-cores.sh b/dist-scripts/wiiu-cores.sh index be2d06ee0789..84152165826c 100755 --- a/dist-scripts/wiiu-cores.sh +++ b/dist-scripts/wiiu-cores.sh @@ -1,141 +1,60 @@ #!/bin/sh # usage: -# copy core libs (*_libretro_wiiu.a), info files (https://github.com/libretro/libretro-super/tree/master/dist/info) -# and icons (https://github.com/libretro/retroarch-assets/tree/master/pkg/wiiu) to this directory then run -# the script. the output will be in retroarch/pkg/wiiu +# copy core libs (*_libretro_wiiu.a) and assets (https://buildbot.libretro.com/assets/frontend/assets.zip) to this +# directory then run the script. the output will be in retroarch/pkg/wiiu . ../version.all platform=wiiu EXT=a -mkdir -p ../pkg/wiiu/retroarch/cores/info -cp *.info ../pkg/wiiu/retroarch/cores/info/ -mkdir -p ../pkg/wiiu/rpx/retroarch/cores/info -cp *.info ../pkg/wiiu/rpx/retroarch/cores/info/ +retroarch_dir=../pkg/wiiu/retroarch +apps_dir=../pkg/wiiu/wiiu/apps +mkdir -p $retroarch_dir/cores $apps_dir +echo "-- Building launcher (Salamander) --" make -C ../ -f Makefile.${platform} SALAMANDER_BUILD=1 clean || exit 1 -make -C ../ -f Makefile.${platform} SALAMANDER_BUILD=1 BUILD_HBL_ELF=1 BUILD_RPX=1 -j3 || exit 1 +make -C ../ -f Makefile.${platform} SALAMANDER_BUILD=1 -j$(nproc) || exit 1 -mkdir -p ../pkg/wiiu/wiiu/apps/retroarch -mv -f ../retroarch_wiiu_salamander.elf ../pkg/wiiu/wiiu/apps/retroarch/retroarch.elf -cp -f ../pkg/wiiu/meta.xml ../pkg/wiiu/wiiu/apps/retroarch/meta.xml -cp -f ../pkg/wiiu/icon.png ../pkg/wiiu/wiiu/apps/retroarch/icon.png -mkdir -p ../pkg/wiiu/rpx/wiiu/apps/retroarch -mv -f ../retroarch_wiiu_salamander.rpx ../pkg/wiiu/rpx/wiiu/apps/retroarch/retroarch.rpx -rm -f ../retroarch_wiiu_salamander.rpx.elf -cp -f ../pkg/wiiu/meta.xml ../pkg/wiiu/rpx/wiiu/apps/retroarch/meta.xml -cp -f ../pkg/wiiu/icon.png ../pkg/wiiu/rpx/wiiu/apps/retroarch/icon.png +if [ -e assets.zip ]; then + # This is named "build" because we're building the assets, but it's also got a broad rule in the gitignore + mkdir -p build/assets + unzip -o assets.zip -d build/assets -make -C ../ -f Makefile.${platform} clean || exit 1 + wuhbtool ../retroarch_wiiu_salamander.rpx $apps_dir/retroarch.wuhb \ + --name="RetroArch" \ + --short-name="RetroArch" \ + --author="libretro" \ + --icon=../pkg/wiiu/booticon.png \ + --tv-image=../pkg/wiiu/bootTvTex.tga \ + --drc-image=../pkg/wiiu/bootDrcTex.tga \ + --content=build/ || exit 1 -lookup() -{ - cat | grep "$1 = " | sed "s/$1 = \"//" | sed s/\"// -} + rm -rf build +fi -gen_meta_xml() -{ - info="$1"_libretro.info - if [ -e $info ] ; then - display_name=`cat $info | lookup "display_name"` - corename=`cat $info | lookup "corename"` - authors=`cat $info | lookup "authors" | sed s/\|/\ -\ /g` - systemname=`cat $info | lookup "systemname"` - license=`cat $info | lookup "license"` - date=`date +%Y%m%d%H%M%S` - build_hash=`git rev-parse --short HEAD 2>/dev/null` - echo '' > "$1"_meta.xml - echo '' >> "$1"_meta.xml - echo ' '$corename'' >> "$1"_meta.xml - echo ' '$authors'' >> "$1"_meta.xml - echo ' '$PACKAGE_VERSION' r'$build_hash'' >> "$1"_meta.xml - echo ' '$date'' >> "$1"_meta.xml - echo ' RetroArch' >> "$1"_meta.xml - echo -e ' '$display_name'\n\nSystem: '$systemname'\nLicense: '$license'' >> "$1"_meta.xml - echo ' emu' >> "$1"_meta.xml - echo ' https://github.com/libretro' >> "$1"_meta.xml - echo '' >> "$1"_meta.xml - fi -} +make -C ../ -f Makefile.${platform} clean || exit 1 for f in `ls -v *_${platform}.${EXT}`; do name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).${EXT}$//"` whole_archive= - build_hbl_elf=1 - build_rpx=1 if [ $name = "nxengine" ] ; then echo "Applying whole archive linking..." whole_archive="WHOLE_ARCHIVE_LINK=1" fi - if [ $name = "mame2003" ] ; then - build_hbl_elf=0 - fi - - if [ $name = "fbalpha2012" ] ; then - build_hbl_elf=0 - fi - - if [ $name = "mame2003_midway" ] ; then - build_rpx=0 - fi - if [ $name = "fbalpha2012_cps1" ] ; then - build_rpx=0 - fi - if [ $name = "fbalpha2012_cps2" ] ; then - build_rpx=0 - fi - if [ $name = "fbalpha2012_cps3" ] ; then - build_rpx=0 - fi - if [ $name = "fbalpha2012_neogeo" ] ; then - build_rpx=0 - fi - echo "-- Building core: $name --" cp -f "$f" ../libretro_${platform}.${EXT} echo NAME: $name # Compile core - make -C ../ -f Makefile.${platform} LIBRETRO=$name BUILD_HBL_ELF=$build_hbl_elf BUILD_RPX=$build_rpx $whole_archive -j3 || exit 1 - gen_meta_xml $name + make -C ../ -f Makefile.${platform} LIBRETRO=$name $whole_archive -j$(nproc) || exit 1 - if [ -e ../retroarch_wiiu.elf ] ; then - cp ../retroarch_wiiu.elf ../pkg/wiiu/retroarch/cores/${name}_libretro.elf - mkdir -p ../pkg/wiiu/wiiu/apps/${name}_libretro - mv -f ../retroarch_wiiu.elf ../pkg/wiiu/wiiu/apps/${name}_libretro/${name}_libretro.elf - if [ -e ${name}_meta.xml ] ; then - cp -f ${name}_meta.xml ../pkg/wiiu/wiiu/apps/${name}_libretro/meta.xml - else - cp -f ../pkg/wiiu/meta.xml ../pkg/wiiu/wiiu/apps/${name}_libretro/meta.xml - fi - if [ -e $name.png ] ; then - cp -f $name.png ../pkg/wiiu/wiiu/apps/${name}_libretro/icon.png - else - cp -f ../pkg/wiiu/icon.png ../pkg/wiiu/wiiu/apps/${name}_libretro/icon.png - fi - fi if [ -e ../retroarch_wiiu.rpx ] ; then - cp ../retroarch_wiiu.rpx ../pkg/wiiu/rpx/retroarch/cores/${name}_libretro.rpx - mkdir -p ../pkg/wiiu/rpx/wiiu/apps/${name}_libretro - mv -f ../retroarch_wiiu.rpx ../pkg/wiiu/rpx/wiiu/apps/${name}_libretro/${name}_libretro.rpx - rm -f ../retroarch_wiiu.rpx.elf - if [ -e ${name}_meta.xml ] ; then - cp -f ${name}_meta.xml ../pkg/wiiu/rpx/wiiu/apps/${name}_libretro/meta.xml - else - cp -f ../pkg/wiiu/meta.xml ../pkg/wiiu/rpx/wiiu/apps/${name}_libretro/meta.xml - fi - if [ -e $name.png ] ; then - cp -f $name.png ../pkg/wiiu/rpx/wiiu/apps/${name}_libretro/icon.png - else - cp -f ../pkg/wiiu/icon.png ../pkg/wiiu/rpx/wiiu/apps/${name}_libretro/icon.png - fi + cp ../retroarch_wiiu.rpx $retroarch_dir/cores/${name}_libretro.rpx fi - rm -rf ${name}_meta.xml - done # Additional build step diff --git a/dist-scripts/wiiu-new-cores.sh b/dist-scripts/wiiu-new-cores.sh deleted file mode 100755 index e02231e2b66a..000000000000 --- a/dist-scripts/wiiu-new-cores.sh +++ /dev/null @@ -1,194 +0,0 @@ -#!/bin/bash - -. ../version.all -platform=wiiu -EXT=a -scriptDir= -pngDir= -infoDir= - -original_pwd=$(pwd) - -setScriptDir() -{ - scriptDir=$(dirname $(readlink -f $1)) -} - -setInfoDir() -{ - if [ -d ../../dist/info ]; then - infoDir=$(readlink -f ../../dist/info) - elif [ $(ls -1 *.info |wc -l) > 0 ]; then - infoDir=$(pwd) - fi - - if [ -z "$infoDir" ]; then - echo "WARNING: Could not find your *.info files. meta.xml files will not be generated." - fi -} - -setPngDir() -{ - pwd - if [ -d ../media/assets/pkg/wiiu ]; then - pngDir=$(readlink -f ../media/assets/pkg/wiiu) - elif [ $(ls -1 *.png |wc -l) > 0 ]; then - pngDir=$(pwd) - fi - - if [ -z "$pngDir" ]; then - echo "WARNING: Could not find your *.png files. icon.png files will not be generated." - fi -} - -getCores() -{ - if [ -d ../../dist/wiiu ]; then - ls -1 ../../dist/wiiu/*.a - elif [ $(ls -1 *.a |wc -l) > 0 ]; then - ls -1 *.a - fi -} - -clean() -{ - local here=$(pwd) - - cd $scriptDir/.. - make -f Makefile.wiiu clean || exit 1 - - for trash in libretro_wiiu.a libretro_wiiu.elf libretro_wiiu.rpx \ - objs/wiiu pkg/wiiu/wiiu pkg/wiiu/retroarch pkg/wiiu/rpx - do - rm -rf $trash - done - - cd $here -} - -# $1 = core filename (e.g. ../../dist/wiiu/somecore_libretro_wiiu.a -# $2 = desired package type, e.g. rpx or elf -coreNameToPackageName() -{ - local packageName=$(basename $1 |awk -F'\.a' '{print $1}' |sed 's/_wiiu//') - echo "$packageName" -} - -lookup() -{ - cat | grep "$1 = " | sed "s/$1 = \"//" | sed s/\"// -} - -generateMetaXml() -{ - local infoFile=$1 - local xmlDir=$2 - local outFile=$xmlDir/meta.xml - - if [ ! -e $infoFile ]; then - return 1 - fi - - local display_name=$(cat $infoFile |lookup "display_name") - local corename=$(cat $infoFile |lookup "corename") - local authors=$(cat $infoFile |lookup "authors" |sed s/\|/\ -\ /g) - local systemname=$(cat $infoFile |lookup "systemname") - local license=$(cat $infoFile |lookup "license") - local build_date=$(date +%Y%m%d%H%M%S) - local build_hash=$(git rev-parse --short HEAD 2>/dev/null) - - mkdir -p $xmlDir - echo '' > $outFile - echo '' >> $outFile - echo ' '$corename'' >> $outFile - echo ' '$authors'' >> $outFile - echo ' '$RARCH_VERSION' r'$build_hash'' >> $outFile - echo ' '$build_date'' >> $outFile - echo ' RetroArch' >> $outFile - echo -e ' '$display_name'\n\nSystem: '$systemname'\nLicense: '$license'' >> $outFile - echo ' emu' >> $outFile - echo ' https://github.com/libretro' >> $outFile - echo '' >> $outFile -} - -copyPng() -{ - local pngFilename=$(echo $1 |sed 's/_libretro//').png - local destFilename=$2/icon.png - - if [ -e $pngDir/$pngFilename ]; then - cp $pngDir/$pngFilename $destFilename - fi -} - -buildCore() -{ - local core=$1 - local distDir=$(pwd) - local buildDir=$(dirname $(pwd)) - local packageName=$(coreNameToPackageName $core) - local rpxResult=$packageName.rpx - local elfResult=$packageName.elf - - cd $buildDir - - if [ -f Makefile.wiiu ]; then - echo "--- building core: $packageName ---" - rm -f libretro_wiiu.a - cp $distDir/$core libretro_wiiu.a - make -f Makefile.wiiu \ - PC_DEVELOPMENT_TCP_PORT=$PC_DEVELOPMENT_TCP_PORT \ - -j3 || exit 1 - - if [ ! -z "$infoDir" ]; then - for i in 'pkg/wiiu/retroarch/cores' 'pkg/wiiu/rpx/retroarch/cores'; do - mkdir -p $i/info - cp $infoDir/$packageName.info $i/info - generateMetaXml $i/info/$packageName.info $i/../../wiiu/apps/$packageName - done - fi - - if [ ! -z "$pngDir" ]; then - for i in 'pkg/wiiu/wiiu/apps' 'pkg/wiiu/rpx/wiiu/apps'; do - copyPng $packageName $i/$packageName - done - fi - - for i in "pkg/wiiu/wiiu/apps/$packageName" 'pkg/wiiu/retroarch/cores'; do - mkdir -p $i - cp retroarch_wiiu.elf $i/$elfResult - done - for i in "pkg/wiiu/rpx/wiiu/apps/$packageName" 'pkg/wiiu/rpx/retroarch/cores'; do - mkdir -p $i - cp retroarch_wiiu.rpx $i/$rpxResult - done - else - echo "ERROR: Something went wrong. Makefile.wiiu not found." - exit 1 - fi - - cd $distDir -} - -setScriptDir $0 - -clean - -cd $scriptDir -if [ -e ../wiiu-devel.properties ]; then - . ../wiiu-devel.properties -fi - -setInfoDir -setPngDir - -cores=$(getCores) - -if [ -z "$cores" ]; then - echo "ERROR: No cores found. Nothing to do." - exit 1 -fi - -for core in $cores; do - buildCore $core -done diff --git a/dist-scripts/wiiu-rpx-upload.sh b/dist-scripts/wiiu-rpx-upload.sh index d27821ddf100..89c3029d220e 100755 --- a/dist-scripts/wiiu-rpx-upload.sh +++ b/dist-scripts/wiiu-rpx-upload.sh @@ -37,10 +37,10 @@ fi filesToUpload() { - find . -type f \( -name "*.rpx" -o -name "*.xml" -o -name "*.png" -o -name "*.info" \) + find . -type f \( -name "*.rpx" -o -name "*.wuhb" -o -name "*.info" \) } -cd ../pkg/wiiu/rpx +cd ../pkg/wiiu # First, delete any previous *.remote files from previous uploads. find . -name '*.remote' | xargs rm -f {} diff --git a/frontend/drivers/platform_wiiu.c b/frontend/drivers/platform_wiiu.c index 24cd4b27f127..e152e4f4a9ec 100644 --- a/frontend/drivers/platform_wiiu.c +++ b/frontend/drivers/platform_wiiu.c @@ -78,6 +78,7 @@ #include "system/memory.h" #define WIIU_SD_PATH "fs:/vol/external01/" +#define WIIU_WUHB_PATH "fs:/vol/content/" #define WIIU_SD_FAT_PATH "sd:/" #define WIIU_USB_FAT_PATH "usb:/" @@ -116,6 +117,15 @@ static void fix_asset_directory(void) rename(src_path_buf, dst_path_buf); } +static bool wuhb_assets_exist(void) +{ + char path_buf[PATH_MAX_LENGTH] = {0}; + + fill_pathname_join(path_buf, WIIU_WUHB_PATH, "assets", sizeof(path_buf)); + + return exists(path_buf); +} + static void frontend_wiiu_get_env_settings(int *argc, char *argv[], void *args, void *params_data) { @@ -128,9 +138,15 @@ static void frontend_wiiu_get_env_settings(int *argc, char *argv[], fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS], g_defaults.dirs[DEFAULT_DIR_PORT], "downloads", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_ASSETS])); + fix_asset_directory(); - fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_ASSETS], g_defaults.dirs[DEFAULT_DIR_PORT], - "assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS])); + if (wuhb_assets_exist()) + fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_ASSETS], WIIU_WUHB_PATH, + "assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS])); + else + fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_ASSETS], g_defaults.dirs[DEFAULT_DIR_PORT], + "assets", sizeof(g_defaults.dirs[DEFAULT_DIR_ASSETS])); + fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE], g_defaults.dirs[DEFAULT_DIR_PORT], "cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE])); fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_INFO], g_defaults.dirs[DEFAULT_DIR_CORE], diff --git a/pkg/wiiu/bootDrcTex.tga b/pkg/wiiu/bootDrcTex.tga new file mode 100644 index 000000000000..cd03af01324b Binary files /dev/null and b/pkg/wiiu/bootDrcTex.tga differ diff --git a/pkg/wiiu/bootTvTex.tga b/pkg/wiiu/bootTvTex.tga new file mode 100644 index 000000000000..073749173049 Binary files /dev/null and b/pkg/wiiu/bootTvTex.tga differ diff --git a/pkg/wiiu/booticon.png b/pkg/wiiu/booticon.png new file mode 100644 index 000000000000..5a5f8f4686d8 Binary files /dev/null and b/pkg/wiiu/booticon.png differ diff --git a/pkg/wiiu/icon.png b/pkg/wiiu/icon.png deleted file mode 100644 index ebcab2b8088e..000000000000 Binary files a/pkg/wiiu/icon.png and /dev/null differ diff --git a/pkg/wiiu/meta.xml b/pkg/wiiu/meta.xml deleted file mode 100644 index d25330c04a48..000000000000 --- a/pkg/wiiu/meta.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - Retroarch - Libretro - &version; - 2022 - Front-end for emulators, game engines and media players. - Open-source and free cross-platform front-end of the libretro API for videogame emulators, game engines, media players and other applications, handled as cores by the Front-end. - - - -