| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
There's no reason to allow direct access to the unique_ptr instance. Only
its contained pointer.
|
| |
|
|
|
|
|
|
| |
This removes explicit checks sprinkled all over the codebase to instead
just have the SW rasterizer expose an implementation with no-ops for
most operations.
|
| |
|
|
|
|
|
|
| |
May fix additional texture caching issues. (Though mostly in homebrew, I
haven't seen any commercial software use this to flush anything but
command lists.)
|
|
|
|
|
| |
This brings goodies such as a configurable user interface and
multi-threaded timeline view.
|
|\
| |
| | |
Kernel: Correct(er) handling of Heap and Linear Heap allocations
|
| |
| |
| |
| |
| | |
These helpers aren't really part of the kernel, and mem_map.cpp/h is
going to be moved there next.
|
|/
|
|
| |
Fixes glitchy garbage in Fire Emblem 3D scenes.
|
|\
| |
| | |
GSP: Don't try to write memory fill registers if start address is 0
|
| |
| |
| |
| |
| | |
Verified to be what GSP does via REing. Fixes invalid virt->phys
translation error spam in some games.
|
|/
|
|
|
|
| |
* IncomingDisplayTransfer: Triggered just before a display transfer is performed.
* GSPCommandProcessed: Triggered right after a GSP command is processed.
* BufferSwapped: Triggered when the frames flip
|
|
|
|
|
|
|
|
| |
This commit fixes several kernel object leaks. The most severe of them
was threads not being removed from the private handle table used for
CoreTiming events. This resulted in Threads never being released, which
in turn held references to Process, causing CodeSets to never be freed
when loading other applications.
|
|
|
|
|
|
| |
This is exposed in the GUI as a new "CiTrace Recording" widget.
Playback is implemented by a standalone 3DS homebrew application (which only runs reliably within Citra currently; on an actual 3DS it will often crash still).
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
memory.cpp/h contains definitions related to acessing memory and
configuring the address space
mem_map.cpp/h contains higher-level definitions related to configuring
the address space accoording to the kernel and allocating memory.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Involves making asserts use printf instead of the log functions (log functions are asynchronous and, as such, the log won't be printed in time)
As such, the log type argument was removed (printf obviously can't use it, and it's made obsolete by the file and line printing)
Also removed some GEKKO cruft.
|
| |
|
| |
|
|
|
|
|
| |
They're finally unnecessary, and will stop cluttering the application's
handle table.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
The code was previously appending the interrupt to after the end of the
buffer, instead of at the end.
|
|
|
|
|
|
|
|
|
|
| |
Hardware testing determined that the GSP processes shared memory
framebuffer update info even when no memory transfer or filling GX
commands are used. They are now updated on every interrupt, which isn't
confirmed correct but matches hardware behaviour more closely.
This also reverts the hack introduced in #404. It made a few games
behave better, but I believe it's incorrect and also breaks other games.
|
|
|
|
|
|
|
|
|
|
|
|
| |
PDC0 and PDC1 are both VBlank interrupts. PDC0 was being treated as a
HBlank interrupt and fired many more times than it should. They now both
fire together at 60 Hz. This puzzlingly *improves* apparent framerate on
many applications.
A few other interrupts were being fired inside the GSP command
processing instead of on the actual GPU register writes, so they were
moved there, which should cover direct writes tho those registers not
going through the GX command queue.
|
| |
|
| |
|
| |
|
|\
| |
| | |
License change
|
| | |
|
|/ |
|
|
|
|
|
|
|
| |
This is a first step at fixing the conceptual insanity that is our
handling of service and IPC calls. For now, interfaces still directly
derived from Session because we don't have the infrastructure to do it
properly. (That is, Processes and scheduling them.)
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
All service calls in the CTR OS return result codes indicating the
success or failure of the call. Previous to this commit, Citra's HLE
emulation of services and the kernel universally either ignored errors
or returned dummy -1 error codes.
This commit makes an initial effort to provide an infrastructure for
error reporting and propagation which can be use going forward to make
HLE calls accurately return errors as the original system. A few parts
of the code have been updated to use the new system where applicable.
One part of this effort is the definition of the `ResultCode` type,
which provides facilities for constructing and parsing error codes in
the structured format used by the CTR.
The `ResultVal` type builds on `ResultCode` by providing a container for
values returned by function that can report errors. It enforces that
correct error checking will be done on function returns by preventing
the use of the return value if the function returned an error code.
Currently this change is mostly internal since errors are still
suppressed on the ARM<->HLE border, as a temporary compatibility hack.
As functionality is implemented and tested this hack can be eventually
removed.
|
|
|
|
| |
These functions are not referred to by their linkage name outside of the translation unit, so they can be marked as static.
|
|
|