mirror of
https://github.com/suyu-emu/drippu-rep.git
synced 2026-09-21 14:44:58 -07:00
* feat(export): bake separate update/DLC dumps into standalone snapshots Resolve base ROM plus picked update/DLC files and optional NAND-installed add-ons through PatchManager at export time, so packaged exefs and romfs.bin are the patched snapshot AOT recompiles. Dump decrypted AOC next to the package and serve it from the deconstructed loader so the standalone runtime does not need post-export NAND installs. Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com> * fix(export): rename AOC dir local to unshadow loader member -Werror=shadow failed Linux tests and macOS MoltenVK: the baked-AOC scan used a local `name` that collided with AppLoader_DeconstructedRomDirectory::name. Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com> * fix(export): fail closed on bake errors; honest ExeFS/AOC status HOLD on PR 29: OnExport ignored session failures, directory ROMs could claim an update bake after PatchExeFS(nullptr), empty exefs/ blocked the Windows extract fallback, and aoc:u Count used the raw program id. - Abort export on Resolve/ok()/unreadable extras; keep bake status - Pass directory ExeFS into PatchManager; only list updates that applied - Do not mkpath empty exefs/; extract fallback on all platforms; refuse DLC without main - CountAddOnContent uses GetBaseTitleID like ListAddOnContent Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com> * fix(export): refuse mixed directory+update snapshots; unbreak macOS HOLD re-review on 363f352: - Fail closed when an update is present but RomFS cannot BKTR without a Program NCA (directory dumps). Do not list Update over base romfs.bin. - Do not create exefs/ for romfs.bin alone; never FillMissing unpatched main next to dumped AOC; honor extract/package failures. - Drop static forward decls that Clang treated as extra overloads (DumpVirtualDir/ExtractExeFsFromRom ambiguous on macOS). - Always remove .aot_work_* on export failure via RAII. Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com> * fix(export): drop unused ExtractRomFsFromRom; require PatchManager replace - Delete dead static ExtractRomFsFromRom (-Werror=unused on ENABLE_QT=ON) - Count update as applied only when PatchExeFS/PatchRomFS return a different handle than the base input, not a side NCA open - Refuse-path status is the error only (not "base game only") Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com> * test(export): drop Core::System Resolve cases that SIGSEGV in CI Linux tests on ea6d1a7 crashed in ExportContentSession Resolve after System::Initialize. Keep header-only bake helpers; live Resolve still needs a fuller emulator fixture. Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com> * fix(export): stop Linux tests spinning 1500s; refuse-path status is the error CoreTiming tests busy-waited while(HasPendingEvents()) with no deadline. 346d452 hung after Catch2's seed line until CTest's 1500s default. Bound that wait to 5s, cap the tests target at 180s, and stream --durations. Resolve error paths now set status to the error (not "base game only"). Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com> * test(ci): name Catch2 hangs; yield fiber handshake spins 346d452 Linux tests timed out at 1500s with only Catch2's seed line because ctest captured stdout. Run bin/tests directly with -s / --durations, split [export] vs the rest, and cap each at 30s/90s. Fibers::InterExchange busy-waited on atomics with no yield; on a 2-vCPU runner that can starve the handshake. Yield and 5s deadline. Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com> * test(ci): name Catch2 cases at start; fiber timeout yields home Drop -s (lazy headers still hide hangs; RingBuffer -s floods Actions). Print+flush the case name from a testCaseStarting listener; keep --durations yes --order decl. On InterExchange handshake expiry, YieldTo this thread's home fiber and return so join() completes and REQUIRE_FALSE can fail closed. Do not YieldTo the partner (fiber mutex deadlock). Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com> * fix(core_timing): join host timer without a lost wakeup Linux tests on a784eaf named CoreTiming[BasicOrderNoPausing] then SIGTERM at the 90s GNU timeout. WaitForTimingIdle had already returned; ~CoreTiming join hung because Reset Set() the events before request_stop, so the thread could Wait() again with the signal consumed. Stop first, then wake; skip pause_event.Wait once the stop token is set. Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com>
User Handbook
The "FAQ".
This handbook is primarily aimed at the end-user - baking useful knowledge for enhancing their emulation experience.
A copy of this handbook is available online.
Basics
- The Basics
- Quickstart
- Settings
- Controllers
- Audio
- Graphics
- Installing Mods
- Run On macOS
- Data, Savefiles and Storage
- Orphaned Profiles
- Troubleshooting
- Using Amiibo
- Using Cheats
- Importing Saves
- Installing Atmosphere Mods
- Installing Updates & DLCs
- Multiplayer