The build system decides whether Legacy3D is available by filtering the
Legacy3D sources per platform and emitting HAVE_LEGACY3D (or USE_LEGACY3D
for RENDERER=legacy) from the result. Key the header include on those
defines instead of re-deriving availability from ANDROID/CORE_GLES, so
GLES targets that keep the renderer see the declaration that
InitRenderers() uses. New ports then only need to touch the source
filter.
Integrate the official Android/webOS build and VFS Games.xml updates. Retain the game-aware remappable Test/Service slots instead of the later global shoulder-button defaults.
Service and test buttons were keyboard-only (KEY_5/KEY_6). Add JOY1_BUTTON21
and JOY1_BUTTON22 defaults so controllers work out of the box. When the
service_on_sticks core option is off these map to L2/R2 (shoulder buttons);
when on, they map to L3/R3 (stick clicks). Tested on Android with RetroArch
virtual pad.
On Android 16, fopen on /storage/emulated/0/ paths is blocked by scoped
storage for apps without MANAGE_EXTERNAL_STORAGE. Add a memory-based
GameLoader constructor that accepts raw XML bytes, then in LibretroWrapper
read Games.xml via the libretro VFS interface (which bypasses the restriction).
If VFS open fails, fall back to the bundled_games_xml bytes embedded in the
binary. This makes the core self-contained and load-capable on Android without
any manual file setup.
Add the standalone MultiTexture setting as a restart-dependent core option. Show it only while the selectable renderer is Legacy3D, while keeping it available in fixed Legacy3D builds.
Keep the active sound-board state tied to the content configuration, document the restart requirement, and notify the user when the option changes. This avoids partially applying a live change across the SCSP and DSB paths.
Keep CPU model, bus multiplier, and PCI bridge tied to Model 3 stepping. Manual frequency choices now affect only the emulated per-frame cycle budget, so 25 and 70 MHz no longer silently initialize 66 MHz internal timing.
Restore the final four-button VR mapping from the previous supermodel-modern branch: VR1/Red=Up, VR2/Blue=Down, VR3/Yellow=Left, and VR4/Green=Right. Keep the default bindings, input descriptors, and control-profile documentation aligned with the order validated in Daytona USA 2's Service menu.
Retain the additional 25 MHz underclock from the previous supermodel-modern branch. Standalone Supermodel accepts the same value through PowerPCFrequency, while the remaining option labels and presets continue to follow the official Libretro implementation.
Bump both Libretro save-state paths and the shared standalone path to format version 6. The Drive Board Z80 CTC adds serialized state that is not compatible with version 5 files.
Port standalone Supermodel commit fda18d3 and its initializer-order correction while retaining the current BlockFile API. Run the drive-board Z80 at 8 MHz, derive NMIs from its programmed CTC, and preserve the prior zero-time-constant fix where a raw value of zero represents 256.
Port upstream standalone commit fef2b38 so Step 1.x exposes only MPC105 and Step 2.x only MPC106. Keep bridge selection tied to hardware stepping even when the Libretro CPU-frequency override is active, and remove obsolete per-game PCI overrides.
Offer runtime New3D or Legacy3D selection only when both renderers are compiled, negotiate the required GL profile, and expose native Quad Rendering and CRT Colour controls behind build capability flags.
When no frontend save RAM or valid native NVRAM exists, optionally seed known games with service-menu generated 93C46 settings while leaving backup RAM fresh. Existing saves remain untouched.
Expose a Gun mode that combines relative RetroMouse movement with the RetroPad cursor while excluding absolute Lightgun coordinates. Clarify the dedicated input-mode labels without changing their stored keys.
Keep four remappable Libretro gear inputs while allowing the core to interpret the right-stick directions either as direct half-axis gears or as a four-position H-pattern with hysteresis.
Validate the complete block layout and ROM metadata before restoring state, detect truncation or corruption with a checksum, preserve legacy core compatibility, and keep the state format at version 5 for the official engine revision.
Honor the number of frames accepted by the Libretro batch callback, preserve deferred ring-buffer data in order, and report partial submissions without treating them as emulator underruns.
Map the standalone MultiThreaded and GPUMultiThreaded settings to a single restart-required Libretro option. Keep the setting independent from RetroArch threaded video.
Remove dead Libretro code and unused declarations, fix initializer and option terminator warnings, and keep warning suppressions scoped to vendored/generated sources. Preserve the official engine by excluding the unrelated historical Z80 CTC behavior change.