468a001a81
* ARM/Decoder: Initial implementation * JitX64: Implement register allocator * JitX64: Initial implementation of JitX64 compiler * JitX64: Add accessors for ARMul_State::exclusive_tag and ARMul_State::exclusive_state * JitX64: Implement ARM_Jit ARM_Jit is the ARM_Interface for the x64 recompiler. * tests: Infrastructure for unit tests * dyncom: Implement Arm_DynCom::ClearCache() * tests/JitX64: Fuzz ARM data processing instructions * JitX64: Implement ARM_Jit::ClearCache() * JitX64: Implement ADC_imm * JitX64: Implement immediate data processing instructions * fixup! Arm/ArmDecoder: Address comments regarding the arm decoder and check versions of all arm instructions * fixup! Builds on OS X now * fixup! Fix bugs in thumb decoder & have it use boost::optional * JitX64/RegAlloc: Improve documentation and improve method names * tests/JitX64: Improve tests * tests/JitX64: Add tests for testing data processing instructions with Rd=R15 * fixup! JitX64/RegAlloc: Rename member functions to (Lock|Bind)ArmFor(Read|ReadWrite|Write). * fixup! Addressed comments regarding JitX64::JitX64 * fixup! tests/JitX64: Address comments * tests/JitX64: Initial thumb tests * Common: Add MathUtil::SignExtend * ARM_Disasm: Disassemble BLX * JitX64: Implement branch instructions * JitX64: Implement 32-bit thumb BL(X) instruction * JitX64: Data Processing: Implement shift-by-immediate (_reg) instructions * JitX64: Data Processing: Implement shift-by-register (_rsr) instructions * x64 ABI: Be explicit about Gen:: namespace * MMIO: UnmapRegion * JitX64: Implement load/store instructions * JitX64: Implement load and store multiple * JitX64: Implement SETEND * tests/JitX64: Improve thumb instruction test coverage * fixup! Fix non-MSVC builds * JitX64: Load/Store: Add UNPREDICTABLE ASSERTs, correct LDR R15 behavior * tests/JitX64: Fix thumb tests * JitX64: Implement synchronisation instructions * JitX64: Implement exception-generating instructions * ARM_Jit: ClearCache upon construct * ARM/Decoder: Fill out more instructions * JitX64: Removed old page table code * fixup! ARM/Decoder: Various fixes * Use C++14 std::integer_sequence. * Split ArmDecoder::Instruction into ArmInstruction and ThumbInstruction * Make Cond, Register, ShiftType and SignExtendRotation enum classes. * ThumbMatcher is no longer allocated on the heap. * JitX64::CondManager now uses Cond instead of SkyEye's ConditionCode. * Add utility functions IsArmRegValid and MakeArmRegList. * fixup! ARM/Decoder: Misc fixes * fixup! Common: Move SignExtend and bits into BitUtil * fixup! arm_dyncom_interpreter * fixup! JitState: Should be final and should have initial values * fixup! Make JitX64::CondManager::CurrentCond() const * fixup! JitX64: Move thumb_BLX_* variables below ArmDecoder::Visitor functions * fixup! RegAlloc: Simplify code * fixup! MMIO: UnmapRegion * fixup! Tests/JitX64: Use std::generate_n and factor pass-testing into DoesBehaviorMatch * fixup! JitX64::LocationDescriptorHash: Use static_cast * fixup! JitX64: Default values for primitive members * fixup! JitX64: Add const to relevant member functions, add initialisers to members of CondManager * fixup! Jit: Remove unnecessary headers * fixup! RunJittedCode: Remove C-style casts * fixup! Common: Common::make_unique -> std::make_unique * fixup! BitUtils * fixup! JitX64: reinterpret_cast<const void* const> -> reinterpret_cast<const void*> * fixup! static -> inline in headers, moved instruction/helper/load_store.h function bodies into .cpp file * fixup! Move public interface of JitX64 class to the top * fixup! Rename JitX64::UpdateFlags* so flag names are in order (N, Z, C, V) * fixup! BitUtil: Correct error messages, independent impl of Bit, correct SignExtend logic |
||
---|---|---|
dist | ||
externals | ||
hooks | ||
src | ||
.gitignore | ||
.gitmodules | ||
.travis-build.sh | ||
.travis-deps.sh | ||
.travis-upload.sh | ||
.travis.yml | ||
appveyor.yml | ||
CMakeLists.txt | ||
CONTRIBUTING.md | ||
Doxyfile | ||
license.txt | ||
README.md |
BEFORE FILING AN ISSUE, READ THE RELEVANT SECTION IN THE CONTRIBUTING FILE!!!
Citra Emulator
Citra is an experimental open-source Nintendo 3DS emulator/debugger written in C++. It is written with portability in mind, with builds actively maintained for Windows, Linux and OS X. Citra only emulates a subset of 3DS hardware, and therefore is generally only useful for running/debugging homebrew applications. At this time, Citra is even able to boot several commercial games! Most of these do not run to a playable state, but we are working every day to advance the project forward.
Citra is licensed under the GPLv2 (or any later version). Refer to the license.txt file included. Please read the FAQ before getting started with the project.
Check out our website!
For development discussion, please join us @ #citra on freenode.
Development
If you want to contribute please take a look at the Contributor's Guide, TODO list and Developer Information. You should as well contact any of the developers in the forum in order to know about the current state of the emulator.
Building
- Windows: Windows Build
- Linux: Linux Build
- OSX: OS X Build
Support
If you like, you can donate by PayPal - any donation received will go towards things like:
- 3DS consoles for developers to explore the hardware
- 3DS games for testing
- Any equipment required for homebrew
- Infrastructure setup
- Eventually 3D displays to get proper 3D output working
- ... etc ...
We also more than gladly accept used 3DS consoles, preferrably ones with firmware 4.5 or lower! If you would like to give yours away, don't hesitate to join our IRC channel #citra on Freenode and talk to neobrain or bunnei. Mind you, IRC is slow-paced, so it might be a while until people reply. If you're in a hurry you can just leave contact details in the channel or via private message and we'll get back to you.