Commit Graph
237 Commits
Author SHA1 Message Date
Jordan Woyak dffc7a650d Common: Replace Result with C++23's std::expected. 2026-01-17 16:58:45 -06:00
Jordan Woyak e5ad814142 Core/DiscIO: Add a setting to load the running game into memory via CachedBlobReader. 2025-11-23 05:17:22 -06:00
JosJuice 8749855643 Call JitInterface::UpdateMembase from PowerPC::MSRUpdated
When the interpreter calls MSRUpdated, we should update the membase
variable. Not because the interpreter itself needs it, but because the
JIT needs it if it's falling back to the interpreter for an instruction
that sets the MSR.

Additionally, the JIT's FallBackToInterpreter needs to read back the new
membase value afterwards.

This fixes games crashing on JitArm64 if mtmsr is set to fall back to
interpreter. I was unable to reproduce the issue on Jit64, presumably
due to a fortunate series of coincidences (instructions that set MSR are
always followed by an exception exit, and
PowerPCManager::CheckExternalExceptions was always calling
JitInterface::UpdateMembase, and Jit64::WriteExceptionExit was always
calling Jit64::EmitUpdateMembase.)
2025-11-02 21:18:07 +01:00
JosJuice 0fa15342ec Boot: Fix RetroAchievements for GameCube games launched with IPL
The SetDisc function calls AchievementManager::LoadGame with the game's
volume. Calling AchievementManager::LoadGame again afterwards with
nullptr prevents RetroAchievements from working.
2025-07-26 18:08:19 +02:00
TryTwo fe121e4c6e PPCSymbolDB: Move loading map on boot logic from boot.cpp into PPCSymbolDB, as it will be needing a mutex.
Cleanup loading code and reduce amount of signals.

On boot. allow previously loaded map to be kept, if its filename matches. Useful for restarting a game with a large symbol map.
2025-06-25 12:01:16 -07:00
TryTwo 5836ca133c PPCSymbolDB: Move function for finding file path to PPCSymbolDB, so MenuBar doesn't have to randomly access boot.cpp to get the file path. 2025-06-22 11:03:03 -07:00
LillyJadeKatrin c68549e9ef AchievementManager - Load unknown games
Prior to this change, any game unrecognized by RetroAchievements would ultimately result in the game being "Closed" by AchievementManager. As a result, if any game was run while in this state without any other closing being done, AchievementManager would simply load it like a new game, despite memory already being accessed.
However, testing and documentation determined that the rcheevos client doesn't actually complain when it fails to hash a game; it just runs this as "Unidentified Game" with RA ID = 0. As such, this change utilizes that in AchievementManager to differentiate between no software running and unidentified software running.

As a result of this, now LoadGame needs to be called for every piece of runnable software, supported format or otherwise. If a supported format is not available, LoadGame can now be called with a nullptr to ensure that rcheevos still properly sets up an unidentified game.
2025-06-07 07:02:24 -04:00
LillyJadeKatrin 1633011d2a Add achievement support for Wii and WiiWare
Add a method to detect console ID from an input file and instruct rcheevos to load as Gamecube or Wii accordingly. Also, hash .wads upon loading, to support achievements on WiiWare titles.
2025-05-01 07:54:12 -04:00
LillyJadeKatrin c796691d00 Remove filename option from achievement manager load
The only option that was currently using this was a pass-by-executable that wouldn't hash correctly anyways.
2025-05-01 07:54:12 -04:00
Jordan Woyak 00544e4dff Core/Boot: Fix unused variable warning. 2025-04-22 18:19:32 -05:00
Zopolis4 2238967d93 Add Triforce IPL hash 2025-04-21 22:05:25 +10:00
Zopolis4 494e2c05c2 Adding support for detecting .bin images 2025-04-21 22:05:24 +10:00
iwubcode e18d98d4fc Core: properly distinguish between ES title switches (Wii titles) and normal loading (GC, also called for Wii..); update config for ES title change, generate textures for both situations 2025-03-22 14:55:20 -05:00
Amber Brault 1c4bfc35d9 Core: Store object name separately for symbols 2024-11-11 12:36:53 -05:00
Tillmann Karras 09b163d814 Boot: don't error for NTSC IPL v1.2 of DOL-001 consoles
Checksum and descriptions from Redump.
2024-10-12 16:11:42 +01:00
Tillmann Karras b168a8092f Boot: write Apploader version into memory
When HLE-ing the apploader, this is necessary to avoid "Error #002"
errors. Homebrew doesn't care.
2024-09-29 03:57:44 +01:00
mitaclaw 5f90673686 StringUtil: Remove JoinStrings
With 12 uses of `JoinStrings` in the codebase vs 36 uses of `fmt::join`, fmtlib's range adapter for string concatenation with delimiters is clearly the preferred option.
2024-09-22 21:09:36 -07:00
Dr. Dystopia 618b41a459 Use 'contains' method 2024-08-14 22:18:28 +02:00
JosJuice 22aa88109f Use a stub AchivementManager when USE_RETRO_ACHIEVEMENTS isn't defined
This lets us reduce the number of USE_RETRO_ACHIEVEMENTS ifdefs in the
code base, reducing visual clutter. In particular, needing an ifdef for
each call to IsHardcodeModeActive was annoying to me. This also reduces
the risk that someone writes code that accidentally fails to compile
with USE_RETRO_ACHIEVEMENTS disabled.

We could cut down on ifdefs even further by making HardcodeWarningWidget
always exist, but that would result in non-trivial code ending up in the
binary even with USE_RETRO_ACHIEVEMENTS disabled, so I'm leaving it out
of this PR. It's not a lot of code though, so I might end up revisiting
it at some point.
2024-06-06 08:26:20 +02:00
LillyJadeKatrin 486a9d2318 Refactored Achievement Mananger to load games through rc_client
HashGame has become LoadGame, similar structure with the file loaders but using the client instead. LoadGameCallback has been created to handle the results. The old LoadGameSync has been deleted as have
several hash and load methods that it called.
2024-05-01 06:43:19 -04:00
mitaclaw b52a08d533 DolphinQt: A Ubiquitous Signal For When Symbols Change
There were three distinct mechanisms for signaling symbol changes in DolphinQt: `Host::NotifyMapLoaded`, `MenuBar::NotifySymbolsUpdated`, and `CodeViewWidget::SymbolsChanged`. The behavior of these signals has been consolidated into the new `Host::PPCSymbolsUpdated` signal, which can be emitted from anywhere in DolphinQt to properly update symbols everywhere in DolphinQt.
2024-03-28 09:57:22 -07:00
mitaclaw c24fa93965 PPCSymbolDB: Move instance to PowerPCManager 2024-03-13 22:58:14 -07:00
Admiral H. Curtiss e6ee217a7c Core: Move Emulation IOS instance to System. 2024-02-07 22:07:30 +01:00
Admiral H. Curtiss 9a3e770c23 Migrate SConfig::bWii to System. 2024-01-31 12:54:07 +01:00
Admiral H. Curtiss fc2ec826d4 FifoPlayer: Move instance to System. 2024-01-05 20:15:18 +01:00
Admiral H. Curtiss ce19d6a35e Core/Boot: Avoid global system accessor when setting disc. 2024-01-04 21:30:24 +01:00
Lioncache 0d75d658b1 Core/IOS/IOS: Remove system parameters from BootstrapPPC() and BootIOS()
An EmulationKernel instance already houses a reference to the currently active system instance.
2023-12-18 11:54:03 -05:00
Lioncash e55f9ed102 AchievementManager: Make GetInstance() return a reference
The internal static member will always have a valid lifetime. Makes this
consistent with other instance based objects in our code.
2023-12-11 13:36:39 -05:00
Mai 2ece642cf8 Merge pull request #12357 from AdmiralCurtiss/ipl-bounds
Core/Boot: Check bounds in Load_BS2().
2023-12-06 19:57:26 -05:00
Admiral H. Curtiss fff538e563 Core/Boot: Check bounds in Load_BS2(). 2023-12-05 22:34:35 +01:00
LillyJadeKatrin 2bf6ebcb90 Added achievement hash to non-disc boot paths. 2023-12-05 16:17:18 -05:00
JosJuice ca7e05bbc4 Jit: Replace "msrBits" with "featureFlags"
Preparation for the next commit.
2023-11-30 22:40:32 +01:00
Admiral H. Curtiss 6a339cbdb3 IOS/ES: Split ESDevice into ESCore and ESDevice.
ESCore implements the core functionality that can also be used outside of emulation. ESDevice implements the IOS device and is only available during emulation.
2023-05-15 20:41:05 +02:00
Admiral H. Curtiss 069280ddc6 HW/VideoInterface: Refactor to class. 2023-03-11 12:50:35 +01:00
Admiral H. Curtiss ee35103ed9 HW/DVD: Rename DVDInterface namespace to DVD. 2023-03-10 18:37:18 +01:00
Admiral H. Curtiss eb25c46a91 HW/DVDInterface: Refactor to class. 2023-03-10 18:12:59 +01:00
Admiral H. Curtiss 7044cff011 Core/Boot: Pass around System. 2023-03-08 22:41:43 +01:00
JosJuice 7cecb28bdf DolphinQt: Properly lock CPU before accessing emulated memory
This fixes a problem I was having where using frame advance with the
debugger open would frequently cause panic alerts about invalid addresses
due to the CPU thread changing MSR.DR while the host thread was trying
to access memory.

To aid in tracking down all the places where we weren't properly locking
the CPU, I've created a new type (in Core.h) that you have to pass as a
reference or pointer to functions that require running as the CPU thread.
2023-02-12 11:27:50 +01:00
Pokechu22 8d71f542cb Boot: Fix shadowing warning 2023-02-09 16:23:02 -08:00
MayImilae 37859ec1da Cleanup: Remove CDUtils
This is a cleaning followup for #11456.
2023-01-28 03:50:57 -08:00
Admiral H. Curtiss 7fd552081f HLE function hooking: Avoid ppcState global. 2023-01-27 15:22:46 +01:00
Admiral H. Curtiss 94455ee9e1 Boot: Avoid ppcState global. 2023-01-27 15:22:45 +01:00
Admiral H. Curtiss ba1b624e1b PowerPC: Remove MSR macro. 2023-01-27 15:22:42 +01:00
Admiral H. Curtiss be8d0b76ca PowerPC: Remove PC macro. 2023-01-27 15:22:41 +01:00
Lioncash e5b91f00b0 Common: Replace StringBeginsWith/StringEndsWith with std equivalents
Obsoletes these functions in favor of the standard member functions
added in C++20.
2023-01-24 14:58:20 -05:00
Shawn Hoffman d51e4e5236 get rid of HAS_STD_FILESYSTEM
just use std::filesystem
2023-01-10 05:17:43 -08:00
Admiral H. Curtiss c20bb01b47 Merge pull request #11372 from JosJuice/m3u-backslash
Boot: Fix handling of M3U file paths containing backslashes
2022-12-29 17:09:38 +01:00
Admiral H. Curtiss a164c47caf Core/Boot: Pass System instance to BootUp() and related. 2022-12-29 05:49:26 +01:00
JosJuice 71f1b1db34 Boot: Fix handling of M3U file paths containing backslashes
Previously, if a user on Windows launched Dolphin from the command line
and specified a path to an M3U file and included backslashes in this path,
Dolphin would fail to resolve relative paths in the M3U file.
2022-12-24 11:13:27 +01:00
Admiral H. Curtiss 839db591d9 HW/Memmap: Refactor Memory to class, move to Core::System. 2022-12-03 13:27:02 +01:00