Files
Jorge Feitosa 6f03aa224a Microphone input, optional melonDS DS core and its touchpad stylus (0134, 0135)
From mihawk-99/PS5_RetroArch#53 and #52 (Jorge Feitosa), renumbered
(0131 to 0133 were taken), taken together: #52 fixes the read loop #53
turns on.

- src/microphone_ps5.cpp (0134): a native AudioIn microphone driver,
  the default one, for the first controller's user. It captures only
  while a core has its microphone on, sends silence under the DualSense
  mute, and keeps PCM only in a bounded queue in memory. RetroArch is
  configured with the microphone; the title links a host stub for
  libSceAudioIn's imports.
- 0135: a microphone read that gets no frames returns silence instead of
  looping forever (a paused core, an empty nonblocking device, a failed
  capture).
- tools/build-melondsds.sh: melonDS DS at pinned revisions (git objects
  by SHA), software renderer and a native-memory JIT, staged only with
  PS5_WITH_MELONDSDS=1; DeSmuME stays the DS default. The DualSense
  touchpad drives its stylus as it drives DeSmuME's.

Changed from the pull requests: the README and the 0134 entry describe
what happens, not an opt-in the code never had. RetroArch's microphone is
on by default, as upstream; melonDS DS listens only while its microphone
button is held (its default), and Settings > Audio > Microphone turns it
off for every core. tests/test_microphone_read.py applies the port's
edits to vendor/retroarch itself rather than reading build/ra-conf, which
a tree configured before 0135 would fail. The SwanStation and melonDS DS
title changes are merged into one licence-file rule.

Evidence: tests/test_microphone_ps5.py (the driver against a simulated
AudioIn: lifecycle, mute, input failure); tests/test_microphone_read.py
(it times out with upstream's loop); tests/test_touchpad_stylus.py
(melonDS DS's relative stylus); tools/build-melondsds.sh, core ABI PASS
(25 exports, kernel_web, sha256 b03d4c93...). A title built with both
optional cores: 61 notice parts, check-notices covers every shipped
executable, check-manifest PASS, 78 melonDS DS options in the catalog.
Gates (default build): format, unit (204), build (staged cores reused),
integration, evidence PASS. Console: with this series' deploy.
2026-10-17 21:25:33 -04:00

81 lines
2.5 KiB
Diff

diff --git a/src/libretro/format.cpp b/src/libretro/format.cpp
index 78ab324..0cc60c8 100644
--- a/src/libretro/format.cpp
+++ b/src/libretro/format.cpp
@@ -82,6 +82,7 @@ auto fmt::formatter<MelonDsDs::FormattedGLEnum>::format(MelonDsDs::FormattedGLEn
#endif
auto fmt::formatter<MelonDsDs::FormattedPCapFlags>::format(MelonDsDs::FormattedPCapFlags e, format_context& ctx) const -> decltype(ctx.out()) {
+#ifdef HAVE_NETWORKING_DIRECT_MODE
auto flags = static_cast<uint32_t>(e);
std::vector<string_view> flagNames;
@@ -117,6 +118,10 @@ auto fmt::formatter<MelonDsDs::FormattedPCapFlags>::format(MelonDsDs::FormattedP
}
return formatter<decltype(flagNames)>::format(flagNames, ctx);
+#else
+ (void)e;
+ return fmt::format_to(ctx.out(), "Unavailable");
+#endif
}
auto fmt::formatter<MelonDsDs::BiosType>::format(MelonDsDs::BiosType c, format_context& ctx) const -> decltype(ctx.out()) {
diff --git a/src/libretro/net/net.hpp b/src/libretro/net/net.hpp
index e61880e..b060c9b 100644
--- a/src/libretro/net/net.hpp
+++ b/src/libretro/net/net.hpp
@@ -19,9 +19,8 @@
#include <memory>
#include <optional>
-#ifdef HAVE_NETWORKING_DIRECT_MODE
+// AdapterData is part of GetAdapters' public return type even without pcap.
#include <Net_PCap.h>
-#endif
#include "Net.h"
#include "config/types.hpp"
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -140,3 +140,7 @@
endif()
dump_cmake_variables()
+
+if (PS5)
+ include("${PS5_PORT_DIR}/native.cmake")
+endif()
--- a/src/libretro/CMakeLists.txt
+++ b/src/libretro/CMakeLists.txt
@@ -250,7 +250,7 @@
# would let the two disagree and change melonDS::NDS's layout underneath us.
target_compile_definitions(melondsds_libretro PUBLIC HAVE_JIT ENABLE_JIT)
- if (NOT APPLE)
+ if (NOT APPLE AND NOT PS5)
target_compile_definitions(melondsds_libretro PUBLIC HAVE_JIT_FASTMEM)
# melonDS doesn't support FastMem on macOS
endif ()
--- a/melondsds_libretro.info.in
+++ b/melondsds_libretro.info.in
@@ -19,13 +19,13 @@
core_options = "true"
core_options_version = "2.0"
database = "Nintendo - Nintendo DS|Nintendo - Nintendo DS (Download Play)|Nintendo - Nintendo DSi|Nintendo - Nintendo DSi Decrypted|Nintendo - Nintendo DSi (Digital)"
-hw_render = "true"
+hw_render = "false"
input_descriptors = "true"
is_experimental = "false"
libretro_saves = "true"
load_subsystem = "true"
needs_fullpath = "false"
-required_hw_api = "OpenGL Core >= 3.2 (>= 4.3 for the compute renderer)"
+required_hw_api = ""
savestate = "true"
savestate_features = "serialized"
single_purpose = "false"