| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
The log filter was being ignored on initialization due to the logging instance being initialized before the config instance, so the log filter was set to its default value.
This fixes that oversight, along with using descriptive exceptions instead of abort() calls.
|
|\
| |
| | |
logging: Simplify and make thread-safe
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This simplifies the logging system.
This also fixes some lost messages on startup.
The simplification is simple. I removed unused functions and moved most things in the .h to the .cpp. I replaced the unnecessary linked list with its contents laid out as three member variables. Anything that went through the linked list now directly accesses the backends. Generic functions are replaced with those for each specific use case and there aren't many. This change increases coupling but we gain back more KISS and encapsulation.
With those changes it was easy to make it thread-safe. I just removed the mutex and turned a boolean atomic. I was planning to use this thread-safety in my next PR about stacktraces. It was actually async-signal-safety at first but I ended up using a different approach. Anyway getting rid of the linked list is important for that because have the list of backends constantly changing complicates things.
|
|/ |
|
|
|
|
|
| |
This setting is best referred to as a speed limit, as it involves the limits of all timing based aspects of the emulator, not only framerate.
This allows us to differentiate it from the fps unlocker setting.
|
|
|
| |
Adds support for loading games with multiple programs embedded within such as the Dragon Quest 1+2+3 Collection
|
| |
|
| |
|
|
|
|
| |
- Removes a dependency on core and input_common from common.
|
|
|
|
| |
Rework the service to spit out to logs instead of a seperate file as well as fix any crashes caused by lm.
|
| |
|
| |
|
| |
|
|
|
|
| |
This isn't used, so it can be removed.
|
|
|
|
|
| |
Given this is a central class, we should flag cases where the return
value of some functions not being used is likely a bug.
|
|
|
|
| |
- This can be used to advance time, e.g. for Pokemon Sword/Shield pokejobs.
|
|
|
|
|
| |
This way it's obvious that this function shouldn't be used in any future
code.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
This commit: Implements CPU Interrupts, Replaces Cycle Timing for Host
Timing, Reworks the Kernel's Scheduler, Introduce Idle State and
Suspended State, Recreates the bootmanager, Initializes Multicore
system.
|
|
|
|
| |
- More consistent with other system components.
|
| |
|
|
|
|
| |
- helpful to disambiguate Kernel::Memory namespace.
|
| |
|
|
|
|
| |
This commit instends on better naming the new purpose of this classes.
|
|
|
|
|
| |
This was carried from Citra and wasn't really used on yuzu. It also adds
some runtime overhead. This commit removes it from yuzu's codebase.
|
|
|
|
|
|
|
|
|
| |
Currently, the main memory management code is one of the remaining
places where we have global state. The next series of changes will aim
to rectify this.
This change simply introduces the main skeleton of the class that will
contain all the necessary state.
|
|
|
|
|
|
| |
* kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for kernel objects.
- See https://github.com/citra-emu/citra/pull/4710 for details.
|
| |
|
| |
|
| |
|
|\
| |
| | |
lm: Rewrite logger to use core reporting services
|
| |
| |
| | |
Allows centralized control over logging mechanisms.
|
| |
| |
| |
| | |
This isn't used anywhere in either the cpp or header file.
|
| |
| |
| |
| |
| |
| | |
This only encourages the use of the global system instance (which will
be phased out long-term). Instead, we use the direct system function
call directly to remove the appealing but discouraged short-hand.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Migrates the HLE service code off the use of directly accessing the
global system instance where trivially able to do so.
This removes all usages of Core::CurrentProcess from the service code,
only 8 occurrences of this function exist elsewhere. There's still quite
a bit of "System::GetInstance()" being used, however this was able to
replace a few instances.
|
|/ |
|
|\
| |
| | |
am: Implement exit locking and self exit commands
|
| |
| |
| |
| | |
Used to determine if yuzu should confirm before pausing or stopping a game.
|
|/ |
|
| |
|
|\
| |
| | |
Implement GPU Synchronization Mechanisms & Correct NVFlinger
|
| | |
|
| |
| |
| |
| |
| | |
Replaces the final usage of the global accessor function and removes it.
Removes one more enabler of global state.
|
|/ |
|
| |
|
|\
| |
| | |
core: Add detailed local reporting feature for development
|
| |
| |
| | |
Also cleanup of general stuff
|
| | |
|
| |
| |
| |
| | |
Needed for backtrace decomposition
|
|/
|
|
| |
This is a hold-over from Citra and doesn't apply to yuzu.
|
| |
|
| |
|
|\
| |
| | |
file_sys: Implement parser and interpreter for game memory cheats
|
| | |
|
| | |
|
|/
|
|
| |
With all usages converted off of it, this function can be removed.
|
|
|
|
|
|
|
|
|
|
|
| |
Gets rid of the largest set of mutable global state within the core.
This also paves a way for eliminating usages of GetInstance() on the
System class as a follow-up.
Note that no behavioral changes have been made, and this simply extracts
the functionality into a class. This also has the benefit of making
dependencies on the core timing functionality explicit within the
relevant interfaces.
|
|
|
|
|
|
|
|
| |
This is a function that definitely doesn't always have a non-modifying
behavior across all implementations, so this should be made non-const.
This gets rid of the need to mark data members as mutable to work around
the fact mutating data members needs to occur.
|
| |
|
|\
| |
| | |
am: Implement HLE profile selector applet
|
| | |
|
|/ |
|
| |
|
|
|
|
|
|
| |
Many of the Current<Thing> getters (as well as a few others) were
missing const qualified variants, which makes it a pain to retrieve
certain things from const qualified references to System.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
There's no real need to use a shared pointer in these cases, and only
makes object management more fragile in terms of how easy it would be to
introduce cycles. Instead, just do the simple thing of using a regular
pointer. Much of this is just a hold-over from citra anyways.
It also doesn't make sense from a behavioral point of view for a
process' thread to prolong the lifetime of the process itself (the
process is supposed to own the thread, not the other way around).
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Given we now have the kernel as a class, it doesn't make sense to keep
the current process pointer within the System class, as processes are
related to the kernel.
This also gets rid of a subtle case where memory wouldn't be freed on
core shutdown, as the current_process pointer would never be reset,
causing the pointed to contents to continue to live.
|
|
|
|
| |
This helper is called very often. The memory ownership shall not be transfered, so just return the raw pointer.
|
|
|
|
|
|
|
|
|
|
|
| |
The follow-up to e2457418dae19b889b2ad85255bb95d4cd0e4bff, which
replaces most of the includes in the core header with forward declarations.
This makes it so that if any of the headers the core header was
previously including change, then no one will need to rebuild the bulk
of the core, due to core.h being quite a prevalent inclusion.
This should make turnaround for changes much faster for developers.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
core.h is kind of a massive header in terms what it includes within
itself. It includes VFS utilities, kernel headers, file_sys header,
ARM-related headers, etc. This means that changing anything in the
headers included by core.h essentially requires you to rebuild almost
all of core.
Instead, we can modify the System class to use the PImpl idiom, which
allows us to move all of those headers to the cpp file and forward
declare the bulk of the types that would otherwise be included, reducing
compile times. This change specifically only performs the PImpl portion.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As means to pave the way for getting rid of global state within core,
This eliminates kernel global state by removing all globals. Instead
this introduces a KernelCore class which acts as a kernel instance. This
instance lives in the System class, which keeps its lifetime contained
to the lifetime of the System class.
This also forces the kernel types to actually interact with the main
kernel instance itself instead of having transient kernel state placed
all over several translation units, keeping everything together. It also
has a nice consequence of making dependencies much more explicit.
This also makes our initialization a tad bit more correct. Previously we
were creating a kernel process before the actual kernel was initialized,
which doesn't really make much sense.
The KernelCore class itself follows the PImpl idiom, which allows
keeping all the implementation details sealed away from everything else,
which forces the use of the exposed API and allows us to avoid any
unnecessary inclusions within the main kernel header.
|
|\
| |
| | |
core: Namespace all code in the arm subdirectory under the Core namespace
|
| |
| |
| |
| | |
Gets all of these types and interfaces out of the global namespace.
|
|\ \
| | |
| | | |
debug_utils: Minor individual interface changes
|
| |/
| |
| |
| |
| | |
Quite a bit of these aren't necessary directly within the debug_utils
header and can be removed or included where actually necessary.
|
|/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Prevents potentially making copies or doing silly things by accident
with the System instance, particularly given our current core is
designed (unfortunately) around one instantiable instance.
This will prevent the accidental case of:
auto instance = System::Instance();
being compiled without warning when it's supposed to be:
auto& instance = System::Instance();
|
|
|
|
| |
Gets the class out of the global namespace.
|
|
|
| |
Full list of new errors and descriptions in core/loader/loader.h
|
| |
|
|
|
|
|
|
| |
* GDBStub works with both Unicorn and Dynarmic now
* Tidy up
|
|\
| |
| | |
video_core: Eliminate the g_renderer global variable
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We move the initialization of the renderer to the core class, while
keeping the creation of it and any other specifics in video_core. This
way we can ensure that the renderer is initialized and doesn't give
unfettered access to the renderer. This also makes dependencies on types
more explicit.
For example, the GPU class doesn't need to depend on the
existence of a renderer, it only needs to care about whether or not it
has a rasterizer, but since it was accessing the global variable, it was
also making the renderer a part of its dependency chain. By adjusting
the interface, we can get rid of this dependency.
|
|\ \
| |/
|/| |
XCI and Encrypted NCA Support
|
| | |
|
| |
| |
| |
| | |
Removes leftover code from citra that isn't needed.
|
|\ \
| | |
| | | |
video_core: Make global EmuWindow instance part of the base renderer …
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Makes the global a member of the RendererBase class. We also change this
to be a reference. Passing any form of null pointer to these functions
is incorrect entirely, especially given the code itself assumes that the
pointer would always be in a valid state.
This also makes it easier to follow the lifecycle of instances being
used, as we explicitly interact the renderer with the rasterizer, rather
than it just operating on a global pointer.
|
|/
|
|
|
|
| |
General moving to keep kernel object types separate from the direct
kernel code. Also essentially a preliminary cleanup before eliminating
global kernel state in the kernel code.
|
|
|
|
| |
- This is necessary so streams are created on the same thread.
|
| |
|
| |
|
|
|
|
|
|
| |
This makes it a compilation error to construct additional instances of
the System class directly, preventing accidental wasteful constructions
over and over.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Converts the service manager from a global into an instance-based
variable.
|
|
|
|
|
|
| |
* core, main.h: Abort on 32Bit ROMs
* main.cpp: Fix Grammar
|
| |
|
|\
| |
| | |
Implement Pull #3184 from citra: core/arm: Improve timing accuracy before service calls in JIT (Rebased)
|
| | |
|
| | |
|
| | |
|
|/ |
|
|
|
|
| |
Also moved the GPU MemoryManager class to video_core since it makes more sense for it to be there.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
- Deleted GetStatus() because it wasn't used anywhere outside of Core::System.
- Fixed design flaw where the message bar status could be set despite the game being stopped.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
- Made LoadKernelSystemMode return a pair consisting of a system mode and a result code (Could use review).
- Deleted ErrorOpenGL error code in favor of just having ErrorVideoCore.
- Made dialog messages more clear.
- Compared archive ID in fs_user.cpp to ArchiveIdCode::NCCH as opposed to hex magic.
- Cleaned up some other stuff.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Now based on std::chrono, and also works in terms of emulated time
instead of frames, so we can in the future frame-limit even when the
display is disabled, etc.
The frame limiter can also be enabled along with v-sync now, which
should be useful for those with displays running at more than 60 Hz.
|
|
|
|
| |
More ergonomic to use and will be required for upcoming changes.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Add error popup when citra initialization failed
|
| |
|
|
|
|
| |
The VFP registers are 64 bits each, and there are 32 of them.
|
|
|
|
| |
Gets rid of a sizeable amount of stuff in armdefs.
|
|
|
|
| |
Remove unnecessary/unused struct variables.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Removed s_ prefix
|
|
|
|
|
|
| |
Core: Cleaned up comment to be more readable.
Citra: Changed loop to be more readable.
|
| |
|
|
|