Commit Graph

399 Commits

Author SHA1 Message Date
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
660232a12c Preliminary implementation of the Triforce Baseboard 2025-04-21 22:05:25 +10:00
8d94d25203 Implement Triforce ID parsing 2025-04-21 22:05:25 +10:00
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
892d6e30df Core/ConfigManager: Add locks for metadata methods
All metadata access methods now acquire a lock on `m_metadata_lock` to prevent race conditions.
2025-02-16 23:15:11 +01:00
fd95607700 Core: apply Dolphin OnFrame patches right after boot 2024-10-16 02:58:03 +01:00
0a80243a92 Modernize std::replace with ranges 2024-10-10 00:53:48 -07:00
6798f63a2e Core: Include partition when calling GetGameTDBID for non-game partition
This problem was introduced in 8842a0f402
and is likely a copy-paste error.

Fixes the problem mentioned in the issue comment
https://bugs.dolphin-emu.org/issues/13640#note-2.
2024-10-05 13:04:50 +02:00
ebb6255441 Display Taiwanese covers for Taiwanese games 2024-08-01 14:42:52 -04:00
962230f91e Core: Store current state in less places
Core::GetState reads from four different pieces of state: s_is_stopping,
s_hardware_initialized, s_is_booting, and CPUManager::IsStepping.
I'm keeping that last one as is for now because there's code in Dolphin
that sets it directly, but we can unify the other three to make things
easier to reason about.

This commit also gets rid of s_is_started. This was previously used in
Core::IsRunningAndStarted to ensure true wouldn't be returned until the
CPU thread was started, but it wasn't used in Core::GetState, so
Core::GetState would happily return State::Running after we had
initialized the hardware but before we had initialized the CPU thread.
As far as I know, there are no callers that have any real need to know
whether the boot process is currently initializing the hardware or the
CPU thread. Perhaps once upon a time there was a desire to make the
apploader debuggable, but a long time has passed without anyone stepping
up to implement it, and the way CBoot::RunApploader is implemented makes
it rather difficult. So this commit makes all the functions in Core.cpp
consider the core to still be starting until the CPU thread is started.
2024-06-21 20:46:44 +02:00
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
0df401b164 Core::IsRunning: Avoid Global System Accessor 2024-05-01 08:54:17 -07:00
b05028da1f Added Change Media client functionality to AchievementMananger
The client can handle media changes natively so disabling can take place internally. This code uses the same external calls to load data, but will call either BeginLoad or BeginChangeMedia based on whether any media is already loaded.
Due to the client's handling of media changes (it simply disables hardcore if an unknown media is detected) the existing functionality for "disabling" the achievements is no longer necessary and can be deleted.
2024-05-01 07:04:32 -04:00
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
f09b71582e Core: Avoid (Some) Global System Accessor 2024-03-18 01:35:42 -07:00
c24fa93965 PPCSymbolDB: Move instance to PowerPCManager 2024-03-13 22:58:14 -07:00
394af40db5 Improved achievements disabled messaging
Most obviously, there is no longer a warning message to the player in the achievement window that achievements are disabled if a game is not currently running.
2024-02-15 16:33:18 -05:00
951be30891 Core: Fix booting titles from NAND. 2024-02-01 19:50:20 +01:00
14121c5504 Core/ConfigManager: Remove dead bAutomaticStart flag. 2024-01-31 22:53:43 +01:00
9a3e770c23 Migrate SConfig::bWii to System. 2024-01-31 12:54:07 +01:00
8d515d407c Migrate SConfig::m_is_mios to System. 2024-01-30 03:45:17 +01:00
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
c8d8ca2ff7 Added Disabled flag to Achievement Manager
The Disabled state sits between Game Closed and completely Shutdown - stronger than the former, as it refuses to let a game be opened again until AchievementManager is restored (which only happens upon a fresh core boot) but it isn't completely shut down and will still allow the player to be logged in and access the achievement settings and their (global) achievement header.
2023-12-05 16:17:17 -05:00
f9f8e94e30 Add default support for WiiLink + configuration 2023-06-25 14:57:15 -04:00
4efa10c170 Merge pull request #11751 from noahpistilli/discord-rpc
UICommon/DiscordPresence: Use GameTDB covers for RPC
2023-05-19 19:35:17 +02:00
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
a383e0cfd5 UICommon:DiscordPresence: Use GameTDB covers for RPC 2023-05-10 23:55:34 -04:00
e4caace6bb Common/IniFile: Move interface into Common namespace
Gets this out of the global namespace and into the Common namespace
2023-04-13 10:19:28 -04:00
eb25c46a91 HW/DVDInterface: Refactor to class. 2023-03-10 18:12:59 +01:00
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
37859ec1da Cleanup: Remove CDUtils
This is a cleaning followup for #11456.
2023-01-28 03:50:57 -08:00
7fd552081f HLE function hooking: Avoid ppcState global. 2023-01-27 15:22:46 +01:00
df6f070a55 Core: Remove FPS, VPS and speed percentage from window title 2023-01-23 21:32:50 +01:00
2081e2f2a1 Config: Move ToGameCubeRegion(), GetDirectoryForRegion(), and GetBootROMPath() to new config system namespace. 2022-06-05 21:24:45 +02:00
c18abfaecc Merge pull request #10356 from AdmiralCurtiss/config-port-core-4
Config: Port remaining Core settings to new config system (the rest).
2022-01-11 16:08:19 -05:00
161c627466 Treewide: Remove unused inclusions of <cinttypes>
Most of these became unneeded when fmt was introduced.
2022-01-09 12:43:11 -08:00
c82b2dccb5 Config: Port SyncGPU settings to new config system. 2022-01-09 21:29:12 +01:00
d8b67bc15f Config: Port BBDumpPort setting to new config system. 2022-01-09 21:29:12 +01:00
92d2fd9d5f Config: Port MMU setting to new config system. 2022-01-09 21:29:12 +01:00
d8825f5635 Config: Port dual core setting to new config system. 2022-01-09 21:29:11 +01:00
5c325eef38 Config: Port SI device settings to new config system. 2022-01-08 20:08:21 +01:00
a0a0bfc5ca Config: Port EXI device settings to new config system. 2022-01-08 19:57:58 +01:00
ed1a1c1fae Config: Port WiimoteControllerInterface setting to new config system. 2022-01-06 16:13:57 +01:00
2354fb4466 Config: Port WiimoteEnableSpeaker setting to new config system. 2022-01-06 16:13:57 +01:00
8c554d2e64 Config: Port WiimoteContinuousScanning setting to new config system. 2022-01-06 16:13:57 +01:00
b2da738c81 Config: Port WiiKeyboard setting to new config system. 2022-01-06 16:13:57 +01:00
f19cf1753b Config: Port WiiSDCard setting to new config system. 2022-01-06 16:13:56 +01:00
2aa44b10ba Config: Port TimingVariance setting to new config system. 2022-01-06 16:13:56 +01:00
dc7e7d08ad Config: Port Fastmem setting to new config system. 2022-01-06 16:13:56 +01:00
88d725c918 Config: Port SyncOnSkipIdle setting to new config system. 2022-01-06 16:13:56 +01:00