| Age | Commit message (Collapse) | Author |
|
|
|
Co-authored-by: Joshua Vandaële <joshua@vandaele.software>
|
|
Tested with a binary that has VMA != (LMA | 0x80000000), unlike most
libogc binaries. This is indeed a valid setup for ELFs, and one that is
generally expected to work properly.
Test code: https://github.com/Wii-Linux/NPLL/tree/reloc
In either case, you still need to set the PC in the debugger to get it
to boot properly, though that is a different issue that I will be fixing
in a future patch.
Without this patch, the code to be runtime-relocated ends up already
loaded at the desired final address, and then when the code tries to
relocate from what it thinks is the source address (where the code
should be, where the LMA is) to the destination address (the VMA, where
Dolphin mistakenly already put the code), it ends up overwriting the
code that it is about to execute with garbage, and then promptly
crashing.
After this patch is applied, the behavior now matches the GameCube with
Swiss (assuming a [recent patch](https://github.com/emukidid/swiss-gc/commit/bb4a57186c1481e291b7b0ea6d8e722bab816042)
is applied), and the Wii with the Homebrew Channel.
|
|
FreeLookCamera.
|
|
Improved stereoscopic 3D settings
|
|
|
|
|
|
analytics enabled value changes
Co-authored-by: Simonx22 <simon@oatmealdome.me>
|
|
frame presentation time and the intended presentation time in the "Show Frame Times" box.
|
|
with ImmediateXFB and/or RushFramePresentation.
|
|
usage of GetTicks() with ImmediateXFB + DualCore.
|
|
being enabled.
|
|
after each presentation for lower input latency.
|
|
Core: Make AddOnStateChangedCallback use HookableEvent.
|
|
VideoCommon: pass the EFB buffer scale into the FramebufferManager
|
|
Debugger: Ignore bctr when stepping out
|
|
Call JitInterface::UpdateMembase from PowerPC::MSRUpdated
|
|
Common and DiscIO: Introduce a thread safe DirectIOFile and make BlobReader implementations use it.
|
|
The core no longer cares which thread is the host thread.
Cleaning up Android's HostThreadLock is left for another PR, in part
because the HostThreadLock in NativeConfig.cpp still serves a purpose,
and in part to make any issues easier to bisect.
|
|
This makes the code simpler, and saves us from the slow operation of
copying the all of RAM on every frame when RAIntegration is enabled.
|
|
By letting threads other than the host thread use things like
CPUThreadGuard, we can do a significant cleanup in AchievementsManager
in a later commit of this pull request.
Note: Some functions still can't be called from the CPU thread (or
threads the CPU thread might block on, like the GPU thread), but can
be called from any other thread.
|
|
JitArm64: Add missing ORR pattern in MOVI2RImpl
|
|
|
|
|
|
|
|
Main: Add SA_RESTART to sigaction sa_flags.
|
|
WiimoteReal/IOLinux: Reopen Bluetooth device if it was unplugged between scans.
|
|
Settings BalloonTip: Have wordwrap use max width.
|
|
DolphinQt: Make disc ConvertDialog have a better minimum size and use QFormLayout.
|
|
Common/Functional: Fix MoveOnlyFunction from inadvertently creating references from lvalues.
|
|
feat(profiles): add "open profiles folder" button + add dropdown button for profile actions
|
|
SettingsWindow: Set navigation list stylesheet in constructor
|
|
a read/write position making them effectively not thread-safe.
|
|
CopyReader functionality thread safe.
|
|
conversions from contiguous ranges.
|
|
thread safe.
|
|
|
|
default value ConfigChangedCallbackID
Co-Authored-By: OatmealDome <OatmealDome@users.noreply.github.com>
|
|
Android: Use the shared HTTP analytics backend
|
|
DolphinAnalytics: Reload backend when config changes
|
|
We can now route Android analytics through Common::HttpAnalyticsBackend, drop the Volley sender, and keep the JNI layer limited to only transfer metadata since https://bugs.dolphin-emu.org/issues/11772 has been fixed.
|
|
StringUtil: Cleanups and add some character encoding conversion unit tests.
|
|
ConfigChangedCallbackID
Co-authored-by: OatmealDome <julian@oatmealdome.me>
|
|
Co-Authored-By: OatmealDome <julian@oatmealdome.me>
|
|
Dentomologist/logging_avoid_overwriting_debug_verbosity_in_release_builds
Logging: Don't overwrite LDEBUG level in Release builds
|
|
Common: Remove the string parameters from the HookableEvent interface.
|
|
Dentomologist/use_asyncworkthread_pushblocking_instead_of_sync_event
CubebStream: Use WorkQueueThread::PushBlocking instead of sync_event
|
|
Push and wait on WorkQueueThread items using PushBlocking. Previously we
created a Common::Event sync_event on the caller's stack, called Wait on
it, then had the WorkQueueThread call Set on the sync_event once the
thread was done.
In addition to being simpler the new way avoids a use-after-free that
could happen in convoluted and unlikely yet possible thread scheduling
sequences.
One such case can be triggered as follows:
* Set your audio backend to Cubeb
* In CubebStream::SetVolume set a breakpoint at the call to Wait and at
the call to cubeb_stream_set_volume.
* Start a game.
* Continue until the Cubeb Worker thread hits the
cubeb_stream_set_volume breakpoint and Emuthread hits the Wait
breakpoint, freezing each thread when it hits its breakpoint.
* Unfreeze Cubeb Worker.
* In Event::Set set a breakpoint at the end of the scope containing the
lock_guard such that the guard has been constructed but not destructed
when the breakpoint is hit.
* Continue until that breakpoint is hit by Cubeb Worker. If other
threads hit it first keep going.
* Freeze Cubeb Worker.
* For convenience remove the breakpoint in Event::Set so other threads
don't trigger it.
* In CubebStream::SetRunning set a breakpoint at the call to Wait.
* Unfreeze Emuthread and continue until the breakpoint is hit.
* In Cubeb Worker go to Event::Set and examine the values of m_mutex's
member variables. In Visual Studio Debug these are locking_thread_id
== 0xcccccc01 and ownership_levels == 0xcccccccc. This is the result
of Visual Studio overwriting the memory used on the stack by
sync_event in CubebStream::SetVolume with cc bytes to represent
uninitialized memory on the stack (since that function already
returned), and then allocating enough memory on the stack when calling
AudioCommon::SetSoundStreamRunning and then CubebStream::SetRunning
that it overwrote one byte of the memory formerly occupied by
locking_thread_id.
* If you unfreeze Cubeb Worker at this point it will trigger the lock
guard's destructor which will then try to unlock m_mutex. Since
m_mutex is no longer in scope this is a use-after-free, and in VS
debug triggers a debug assert due to locking_thread_id not matching
the current thread id.
|
|
LillyJadeKatrin/retroachievements-message-adjustments
Retroachievements message adjustments
|
|
|