Add Cemu (Wii U) core rule and info file

There is no Wii U core on the buildbot at the moment. Cemu has a
libretro port that builds and runs on Linux, so register it.

Everything in the info file was read off the core rather than guessed:
supported_extensions, needs_fullpath and the version come from
retro_get_system_info, hw_render from the SET_HW_RENDER call,
input_descriptors from SET_INPUT_DESCRIPTORS, libretro_saves because the
MLC directory is created under GET_SAVE_DIRECTORY, and savestate is
false because retro_serialize_size returns 0 by design - Cemu has no
state serialization. cheats and memory_descriptors are false for the
same kind of reason: retro_cheat_set is an empty stub and the core never
calls SET_MEMORY_MAPS. Marked experimental.

build_extradir is "../bin/" because Cemu's CMake sends the core to
<source>/bin instead of into the build directory.

Note that the repository is currently my fork, as upstream
danprice142/Cemu-Libretro has been dead since January. There is also no
project for it on git.libretro.com yet, so a mirror still has to be set
up before anything can actually be built - happy to retarget the URL if
the core gets a home under the libretro organisation.
This commit is contained in:
WizzardSK committed 2026-07-30 18:28:12 +02:00
1 parent 4c4d6f289a
commit d13c649bc7
2 files changed
+47

No files matched your search

+35
View File
@@ -0,0 +1,35 @@
# Software Information
display_name = "Nintendo - Wii U (Cemu)"
authors = "Cemu Project|WizzardSK"
supported_extensions = "wud|wux|wua|iso|rpx|elf"
corename = "Cemu"
categories = "Emulator"
license = "MPL-2.0"
permissions = ""
display_version = "2.6"
# Hardware Information
manufacturer = "Nintendo"
systemname = "Wii U"
systemid = "wiiu"
database = "Nintendo - Wii U"
# Libretro Features
supports_no_game = "false"
hw_render = "true"
needs_fullpath = "true"
disk_control = "false"
savestate = "false"
cheats = "false"
input_descriptors = "true"
memory_descriptors = "false"
libretro_saves = "true"
core_options = "true"
load_subsystem = "false"
is_experimental = "true"
# Firmware / BIOS
firmware_count = 0
notes = "(!) Save states are not supported - Cemu has no state serialization.|(!) Requires keys.txt in system/Cemu/ to load encrypted titles.|(!) MLC storage is created in saves/Cemu/mlc01/.|(!) Shared fonts go in system/Cemu/resources/sharedFonts/, graphic packs in system/Cemu/graphicPacks/.|(!) Needs a Vulkan or OpenGL 4.5 capable GPU. On Wayland use the Vulkan graphics API core option - the OpenGL path renders black there."
description = "A port of the Cemu Wii U emulator to libretro. Renders through the frontend's hardware context, either Vulkan (sharing RetroArch's instance, device and queue) or OpenGL 4.5 core profile, and can composite the GamePad (DRC) screen next to the TV screen in several layouts. Save states are not supported and never will be, as Cemu has no infrastructure for serializing emulator state."
+12
View File
@@ -1949,6 +1949,18 @@ libretro_radio_name="Radio"
libretro_radio_git_url="https://github.com/fpscan/libretro-radio.git"
libretro_radio_build_makefile="Makefile"
include_core_cemu() {
register_module core "cemu" -ios -theos_ios -ngc -ps3 -psp1 -qnx -wii
}
libretro_cemu_name="Cemu"
libretro_cemu_git_url="https://github.com/WizzardSK/cemu-libretro.git"
libretro_cemu_git_submodules="yes"
libretro_cemu_build_rule="cmake"
libretro_cemu_build_opengl="yes"
libretro_cemu_build_args="-DENABLE_LIBRETRO=ON -DENABLE_BLUEZ=OFF -DENABLE_FERAL_GAMEMODE=OFF"
# CMake writes cemu_libretro.so to <source>/bin, not into the build directory.
libretro_cemu_build_extradir="../bin/"
# CORE RULE VARIABLES
#
# All variables follow the format of libretro_<core>_<setting> where <core> is