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.
-
-
-
-