Commit Graph

1300 Commits (9b83f0e15859ed56a8e25f204484d2cd34b74f16)

Author SHA1 Message Date
bunnei 78bb86293f Merge pull request #253 from purpasmart96/mem_map
MemMap: Removed I/O address's and added more stuff
2014-12-29 21:57:04 +07:00
bunnei c2f41f0404 Merge pull request #362 from bunnei/dyncom-cleanup
dyncom: Various cleanups to match coding style, no functional changes.
2014-12-29 21:53:49 +07:00
bunnei dedbdb2dfb Merge pull request #344 from Yllodra/Qt-Oddities
Allow focus on the Qt render widget
2014-12-29 21:52:38 +07:00
bunnei aa49019afb dyncom: Various cleanups to match coding style, no functional changes. 2014-12-29 21:50:47 +07:00
Tony Wasserka b7e0b16354 Merge pull request #351 from yuriks/optimize
Rasterizer Optimizations
2014-12-30 00:13:48 +07:00
bunnei 2d2aa2c0be Merge pull request #361 from lioncash/moreqops
dyncom/armemu: Implement QADD8/QSUB8.
2014-12-29 14:53:04 +07:00
Lioncash d08d9f8747 dyncom: Fix SMLALXY's instruction labels
They were erroneously labeled as SMLAL.
2014-12-29 12:04:34 +07:00
Tony Wasserka 13699f05e7 Merge pull request #303 from linkmauve/fs-cleanup
FileSys cleanup
2014-12-29 12:14:59 +07:00
Lioncash e412c0fc46 dyncom: Implement QADD8/QSUB8 2014-12-29 00:54:48 +07:00
Lioncash 7ad400d5a7 armemu: Implement QADD8/QSUB8 2014-12-29 00:49:10 +07:00
bunnei 472ec0d0cf Merge pull request #360 from lioncash/dynuxt
dyncom: Implement UXTB16/UXTAB16
2014-12-28 23:20:30 +07:00
Yuri Kunde Schlesner 8369ee5803 Rasterizer: Pre-divide vertex attributes by W
Execute the division-by-W for perspective-correct interpolation of
values in the clipper, moving them out of the rasterization inner loop.
2014-12-29 02:08:11 +07:00
Yuri Kunde Schlesner fe186d3a59 GPU: Bitwise texture swizzling
Replace the loop-based texture address swizzling code by a bit-twiddling
implementation, providing a very small speed up. Also simplify
addressing code.
2014-12-29 02:08:11 +07:00
Yuri Kunde Schlesner 2012e1420f Rasterizer: Common sub-expression elimination
Move the computation of some values out of loops so that they're not
constantly recalculated even when they don't change.
2014-12-29 02:08:10 +07:00
Yuri Kunde Schlesner 7e9bc85cc8 Clipper: Compact buffers on each clipping pass
Use a new buffer management scheme in the clipper that allows using a
bounded minimal amount of buffer space. Even though it copies more data
it is still slightly faster likely due to using less cache.
2014-12-29 02:08:10 +07:00
Yuri Kunde Schlesner a320d1a5b4 Clipper: Avoid dynamic allocations
The triangle clipper was allocating its temporary input, output and work
buffers using a std::vector. Since this is a hot path, it's desirable to
use stack allocation instead.
2014-12-29 02:08:09 +07:00
Yuri Kunde Schlesner d151d797b1 Vertex Shader: Zero OutputVertex to avoid denormals
Unused OutputVertex attributes were being left un-initialized. The
leftover garbage sometimes decoded as floating-point denormalized
values, causing fallbacks to microcode and massive slowdowns in the rest
of the rasterization pipeline even though the results were unused. By
zeroing the structure we ensure these attributes only contain harmless
zeros.
2014-12-29 02:08:09 +07:00
Lioncash 5c198686ce dyncom: Implement UXTB16/UXTAB16 2014-12-28 22:45:04 +07:00
bunnei 487a80f9f7 Merge pull request #347 from bunnei/frameskip
Frameskip
2014-12-28 22:39:17 +07:00
bunnei df728cb4c2 Merge pull request #355 from lioncash/simp
armemu: Simplify some instructions.
2014-12-28 22:20:49 +07:00
bunnei 3b9d181b8e GPU: Implement frameskip and remove forced framebuffer swap hack. 2014-12-28 22:14:05 +07:00
bunnei 5763d40319 Merge pull request #352 from xdec/PR_XDEC_172
Qt: Citra crashes if disassembler pause button is pressed while no game is running. #172
2014-12-28 22:00:47 +07:00
bunnei 9a403d7dfb Merge pull request #359 from lioncash/vfp
vfp: Actually make the code somewhat readable
2014-12-28 21:54:53 +07:00
bunnei 77363d9590 Merge pull request #331 from yuriks/handle-reform
New Handle manager
2014-12-28 21:11:55 +07:00
Lioncash 9c7f2570f7 vfp: Actually make the code somewhat readable 2014-12-28 18:55:01 +07:00
bunnei bf9b33aa9f dyncom: Implement PKHBT and PKHTB. 2014-12-28 16:50:08 +07:00
bunnei 58cb62fe7b armemu: Fix PKHTB to do an arithmetic shift and correctly decode immediate field. 2014-12-28 16:18:52 +07:00
xdec e6162ed91e Qt: we don't need to check if model is valid. 2014-12-28 10:11:51 +07:00
Lioncash 7d322b5c6f dyncom: Implement USAD8/USADA8 2014-12-28 12:40:51 +07:00
Lioncash 6ce2a38ec4 armemu: Simplify SSAT/SSAT16/SXTB/SXTAB 2014-12-28 12:19:31 +07:00
Lioncash 9f5b53f9ff armemu: Simplify REV/REV16/SXTH/SXTAH 2014-12-28 12:13:13 +07:00
bunnei 762f16c4ad Merge pull request #354 from lioncash/usaduflow
armemu: Fix underflows in USAD8/USADA8
2014-12-28 11:57:25 +07:00
Lioncash 914ecfe04f armemu: Simplify USAT16/UXTB/UXTAB 2014-12-28 11:57:14 +07:00
Lioncash 5e16216afb armemu: Simplify REVSH/UXTH/UXTAH 2014-12-28 11:57:09 +07:00
Yuri Kunde Schlesner 7e2903cb74 Kernel: New handle manager
This handle manager more closely mirrors the behaviour of the CTR-OS
one. In addition object ref-counts and support for DuplicateHandle have
been added.

Note that support for DuplicateHandle is still experimental, since parts
of the kernel still use Handles internally, which will likely cause
troubles if two different handles to the same object are used to e.g.
wait on a synchronization primitive.
2014-12-28 11:52:55 +07:00
Yuri Kunde Schlesner 23f2142009 Kernel: Replace GetStaticHandleType by HANDLE_TYPE constants 2014-12-28 11:52:53 +07:00
Yuri Kunde Schlesner 73fba22c01 Rename ObjectPool to HandleTable 2014-12-28 11:52:52 +07:00
Lioncash 059c65a27a armemu: Fix underflows in USAD8/USADA8
Initially reported by xdec.
2014-12-28 06:09:43 +07:00
xdec 8de09d87ab Fix crash when the disassembler pause button is pressed while no game is running. 2014-12-28 01:56:07 +07:00
Lioncash af69b0840b dyncom: Implement UQADD8, UQADD16, UQSUB8, UQSUB16, UQASX, and UQSAX. 2014-12-27 17:24:34 +07:00
Lioncash 60523113a9 armemu: Implement UQADD8, UQADD16, UQSUB16, UQASX, and UQSAX 2014-12-27 17:06:19 +07:00
Lioncash 52d889d85d dyncom: Implement UHADD8, UHADD16, UHSUB8, UHSUB16, UHASX, and UHSAX 2014-12-27 00:57:32 +07:00
bunnei b48ca7878b Merge pull request #348 from lioncash/uhops
armemu: Implement UHADD8, UHADD16, UHSUB8, UHSUB16, UHASX, and UHSAX
2014-12-27 00:34:39 +07:00
Lioncash 84a0438cf5 armemu: Implement UHADD8, UHADD16, UHSUB8, UHSUB16, UHASX, and UHSAX 2014-12-26 23:55:39 +07:00
bunnei a2005d0657 GPU: Change internal framerate to 30fps. 2014-12-26 21:48:32 +07:00
bunnei 01c675685e Merge pull request #327 from Apology11/master
Fix visual studio ambiguous symbol error
2014-12-26 21:43:59 +07:00
Daniel Lundqvist 7e3f62a367 Remove duplicate work 2014-12-26 20:12:11 +07:00
Daniel Lundqvist ba4ca041f4 Allow focus only when in popout mode
Only allow manually setting focus to the rendering widget when in Single Window mode. Apply this behavior to when changing the mode while an app is running.
2014-12-26 19:42:27 +07:00
bunnei e5ddbfee02 Merge pull request #339 from bunnei/fixup-gsp-synch
Fixup gsp synch
2014-12-25 22:52:40 +07:00
bunnei 5d2ee78d8f Merge pull request #330 from purpasmart96/new_srv
More services & small clean ups
2014-12-25 22:51:38 +07:00
bunnei 5799025ac4 GPU: Further improve synchronization. 2014-12-25 22:46:55 +07:00
bunnei 4783133bbd ARM: Add a mechanism for faking CPU time elapsed during HLE.
- Also a few cleanups.
2014-12-25 22:46:44 +07:00
purpasmart96 9796bc1fa2 More services & small clean ups 2014-12-25 19:08:33 +07:00
bunnei 9c8ec675d9 Merge pull request #343 from lioncash/smmla
armemu: Implement SMMUL, SMMLA, and SMMLS.
2014-12-25 21:57:31 +07:00
bunnei 254567056f Merge pull request #341 from lioncash/moresmops
armemu: Implement SMLALD/SMLSLD
2014-12-25 21:46:54 +07:00
Daniel Lundqvist 9d90b26020 Allow focus on the Qt render widget
By default widgets are set to the focus policy Qt::NoFocus which disallows manually focusing it. Changing the policy to allow clicking the widget to set focus to it allows for keyboard input when not rendering to a popout window. This commit also sets focus to the widget when showing it.

Fixes issue #158.
2014-12-26 02:37:52 +07:00
Lioncash 35dbfc7ab0 armemu: Implement SMMUL, SMMLA, and SMMLS. 2014-12-25 13:52:46 +07:00
Lioncash 82c3962b95 armemu: Implement SMLALD/SMLSLD 2014-12-24 09:29:48 +07:00
Lioncash 6b7808e412 armemu: Fix GE/Q flag setting semantics 2014-12-24 07:56:57 +07:00
Emmanuel Gil Peyrot bbe0bf1332 FileSys: Clean up according to the coding style, and remove redundant namespaced names. 2014-12-24 01:49:48 +07:00
bunnei 2bbbe68399 Merge pull request #328 from archshift/writeable
Stubbed IsSdmcWriteable to always return writeable.
2014-12-23 20:41:51 +07:00
archshift 81a538ccc2 Stubbed IsSdmcWriteable to always return writeable. 2014-12-23 22:22:48 +07:00
Lioncash 20fc5f2a35 armemu: Set the Q flag correctly for much of the other ops
They were setting the old S flag.
2014-12-23 09:59:37 +07:00
Lioncash 79a7a432c5 armemu: Set the Q flag properly for SMLAD/SMUAD 2014-12-23 09:58:21 +07:00
bunnei d31a94f06b Merge pull request #334 from lioncash/cpsr
armemu: Fix retrieval of the CPSR in MRS instructions.
2014-12-23 09:44:04 +07:00
bunnei 53447da142 Merge pull request #335 from lioncash/cpsrcreate
armemu: Emulate the GE and Q flags.
2014-12-23 09:43:46 +07:00
Lioncash 6446331938 armemu: Properly set the Q flag for SSAT16/USAT16 upon saturation. 2014-12-22 23:52:05 +07:00
Lioncash f66d356938 armemu: Fix SEL
Needs to use the updated state of the CPSR.
2014-12-22 23:52:05 +07:00
Lioncash 8e2accd974 armemu: Fix construction of the CPSR 2014-12-22 23:51:59 +07:00
Lioncash 8c72322422 armemu: Fix retrieval of the CPSR in MRS instructions. 2014-12-22 21:44:03 +07:00
bunnei 949d95659e Merge pull request #275 from yuriks/cmake-clean
Clean up CMake library specification
2014-12-22 11:11:37 +07:00
Lioncash 97f3e884d2 dyncom: Move over QADD16/QASX/QSAX/QSUB16 2014-12-22 01:09:42 +07:00
bunnei 2188af4a65 Merge pull request #322 from chinhodado/master
More warning cleanups
2014-12-22 00:12:43 +07:00
bunnei ae76469373 Merge pull request #332 from lioncash/sel
dyncom: Move SEL over
2014-12-21 21:49:45 +07:00
bunnei ec1ddc17e2 Merge pull request #312 from Subv/still_more_savedata_stuff
CFG: Implemented the GetConfigInfoBlk2 function.
2014-12-21 21:47:25 +07:00
Lioncash 245276c9cc dyncom: Move SEL over 2014-12-21 21:19:15 +07:00
bunnei 770b274c86 Merge pull request #324 from lioncash/dync
dyncom: Move over SASX/SSAX/SADD16/SSUB16
2014-12-21 20:33:14 +07:00
Lioncash c6f27055c9 dyncom: Move over SASX/SSAX/SADD16/SSUB16 2014-12-21 19:50:36 +07:00
Subv 2030f9d946 CFG: Fixed some warnings and errors in Clang 2014-12-21 18:25:49 +07:00
Subv 304735fb52 CFG: More style changes 2014-12-21 18:02:27 +07:00
Subv f080e3ccfa CFGU: Indentation 2014-12-21 17:54:14 +07:00
Subv 6f304d3b00 CFG: Some indentation 2014-12-21 17:41:35 +07:00
Subv b3cee19289 CFG: Changed the CreateConfigInfoBlk search loop 2014-12-21 17:26:51 +07:00
Subv 3e94b9054c CFG: Corrected the licenses in cfg_i.cpp and cfg_u.cpp 2014-12-21 16:45:13 +07:00
Subv 6115f013a9 CFG: Create a new subfolder cfg inside service to handle cfg
Moved most of the shared CFG code there, implemented a few CFG:I functions
2014-12-21 16:41:06 +07:00
Subv 9e45240e23 CFGU: Some changes 2014-12-21 16:39:29 +07:00
Subv cdd78fa01d CFGU: Addressed some issues. 2014-12-21 16:39:26 +07:00
Subv 718a120754 CFGU: Addressed some comments. 2014-12-21 16:39:23 +07:00
Subv a1b9b80a55 Style: Addressed some comments 2014-12-21 16:39:20 +07:00
Subv a7cc7972de CFG_U: Use Common::make_unique instead of the std version 2014-12-21 16:39:17 +07:00
Subv 9029efd873 CFG:U: Implemented some more blocks 2014-12-21 16:39:14 +07:00
Subv 8b0ee93526 CFG: Implemented block 0x00070001 in the config savefile 2014-12-21 16:39:11 +07:00
Subv b3d1c8ba6a CFGU: Use an absolute offset in the config savefile blocks 2014-12-21 16:39:08 +07:00
Subv 95ca6ae1e1 CFG: Load the Config savedata file if it already exists. 2014-12-21 16:39:05 +07:00
Subv b49bdb6ba7 CFGU: Added block 0x000A0002 to the default savegame file
That's the language id block, we're using LANGUAGE_EN for now. This block allows some games to boot further
2014-12-21 16:39:02 +07:00
Subv 4cd21b43c1 CFG: Refactored how the config file works.
It is now kept in memory as per 3dbrew, all updates happen on memory, then they can be saved using UpdateConfigNANDSavegame.
2014-12-21 16:38:59 +07:00
Subv 462740278d CFG:U: Add some data to the 0x00050005 config block.
Seems to allow some games to boot further, thanks @Normmatt for sharing this information
2014-12-21 16:38:57 +07:00
Subv fa3d72ab3e CFG: Implemented the GetConfigInfoBlk2 function.
Added a "config" file to the CFG process service (CFG:U), and added a few default blocks to it.

Implemented GetSystemModel and GetModelNintendo2DS
2014-12-21 16:38:54 +07:00
bunnei 0de6a08d75 Merge pull request #291 from purpasmart96/license
License change
2014-12-21 16:05:44 +07:00
Apology11 8d81e23d6e Fix visual studio ambiguous symbol error 2014-12-21 18:34:20 +07:00
Chin 0199a7d9ef More warning cleanups 2014-12-21 10:58:55 +07:00
bunnei 572ce043c2 Merge pull request #271 from archshift/createf
Added CreateFile to the FS_USER service
2014-12-21 01:45:00 +07:00
archshift 0625dd09ea Added CreateFile to the FS_USER service
Tested with hwtests.
2014-12-21 02:21:49 +07:00
purpasmart96 ebfd831ccb License change 2014-12-20 21:20:24 +07:00
bunnei 0f696037f6 Merge pull request #323 from lioncash/saddsub
armemu: Implement SADD8/SSUB8
2014-12-21 00:10:12 +07:00
bunnei 4fcdbed9f6 Thread: Wait current thread on svc_SleepThread
- Removed unused VBLANK sleep mode
- Added error log for bad context switch
- Renamed VerifyWait to CheckWaitType to be more clear
2014-12-20 23:20:19 +07:00
Lioncash 855eda6f85 armemu: Implement SADD8/SSUB8 2014-12-20 23:10:35 +07:00
bunnei 2e5869c939 Merge pull request #316 from yuriks/thread-handle
Kernel: Implement support for current thread pseudo-handle
2014-12-20 16:36:01 +07:00
bunnei 0e9262885d Merge pull request #296 from lioncash/dyn
dyncom: Implement UMAAL
2014-12-20 16:24:12 +07:00
bunnei 993afd3bf0 Merge pull request #310 from lioncash/ssat16
armemu: Fix SSAT16.
2014-12-20 16:23:54 +07:00
Lioncash 2a097f0990 armemu: Should be using labs for USAD8/USADA8 2014-12-20 15:34:14 +07:00
bunnei 7095c4959b Merge pull request #311 from lioncash/usada
armemu: Implement USAD8 and USADA8
2014-12-20 15:21:25 +07:00
bunnei 52bc58283d Merge pull request #313 from lioncash/smlsd
armemu: Implement SMLSD
2014-12-20 15:18:52 +07:00
bunnei 1c50a036dd Merge pull request #314 from lioncash/qsax-qasx
armemu: Implement QASX and QSAX
2014-12-20 15:18:05 +07:00
Tony Wasserka 08f42c2b8c Pica/VertexShader: Promote a log message to critical status. 2014-12-20 18:06:56 +07:00
Tony Wasserka 17f31de364 Pica/VertexShader: Small optimization. 2014-12-20 18:06:56 +07:00
Tony Wasserka a664574ecb Pica/VertexShader: Be robust against invalid inputs.
More specifically, this also fixes crashes by Citra trying to load a src2 register even if the current instruction does not use that.
2014-12-20 18:06:56 +07:00
Tony Wasserka ad5db467d7 Pica/VertexShader: Clarify a comment. 2014-12-20 18:06:56 +07:00
Tony Wasserka 871418e62b Pica/DebugUtils: Further cleanups to LookupTexture. 2014-12-20 18:06:56 +07:00
Tony Wasserka 88e9efe4b8 Pica/DebugUtils: Fix two warnings. 2014-12-20 18:06:56 +07:00
Tony Wasserka 6e275778c9 Pica/DebugUtils: Better document LookupTexture. 2014-12-20 18:06:55 +07:00
Tony Wasserka e4e9710d18 Pica/Rasterizer: Get rid of C-style casts. 2014-12-20 18:06:55 +07:00
Tony Wasserka d81370682f Pica/DebugUtils: Make a number of variables static.
Makes for cleaner and faster code.
2014-12-20 18:06:55 +07:00
Tony Wasserka 6bd41de276 Pica/VertexShader: Cleanup flow control logic and implement CMP/IFU instructions. 2014-12-20 18:06:55 +07:00
Tony Wasserka 22afb9d830 Pica/VertexShader: Run instruction handlers according to the effective opcode.
This allows for proper emulation of the different CMP/LRP/MAD instructions.
2014-12-20 18:06:55 +07:00
Tony Wasserka cd163fb59a Pica/VertexShader: Implement MAX instructions. 2014-12-20 18:06:55 +07:00
Tony Wasserka aff808b2fd Pica: Add support for boolean uniforms. 2014-12-20 18:06:55 +07:00
Tony Wasserka 67618a2c55 Pica/VertexShader: Add support for MOVA, CMP and IFC. 2014-12-20 18:06:55 +07:00
Tony Wasserka cb1804e0ab Pica/VertexShader: Move code around a bit. 2014-12-20 18:06:55 +07:00
Tony Wasserka b85524c760 Pica/VertexShader: Some cleanups using std::array. 2014-12-20 18:06:55 +07:00
Tony Wasserka ce36ad454e Pica/VertexShader: Support negating src2. 2014-12-20 18:06:55 +07:00
Tony Wasserka cc5746abfe Pica/DebugUtils: Replace duplicated SHBIN structures in favor of nihstro's ones. 2014-12-20 18:06:55 +07:00
Tony Wasserka 8ce1d32460 Pica/VertexShader: Remove (now) duplicated shader bytecode definitions in favor of nihstro's ones. 2014-12-20 18:06:55 +07:00
Tony Wasserka 79c29243ed Pica/DebugUtils: Add an event triggered after loading a vertex. 2014-12-20 18:06:55 +07:00
Tony Wasserka cd322e328e Pica/PrimitiveAssembly: Implement triangle strips. 2014-12-20 18:06:54 +07:00
Tony Wasserka 346012f29e Pica/CommandProcessor: Add a safety check for invalid (?) GPU configurations. 2014-12-20 18:06:54 +07:00
Tony Wasserka 1e960e9ee2 Pica/CommandProcessor: Fix vertex decoding if multiple memory areas are accessed for different attributes. 2014-12-20 18:06:54 +07:00
Tony Wasserka 1c972ef3b9 Add support for a ridiculous number of texture formats. 2014-12-20 18:06:54 +07:00
Tony Wasserka 40f123b7c0 Pica: Unify ugly address translation hacks. 2014-12-20 18:06:53 +07:00
Tony Wasserka 7e210e0229 Pica: Further improve Tev emulation. 2014-12-20 18:05:53 +07:00
Tony Wasserka 3df88d59b0 Pica: Merge texture lookup logic for DebugUtils and Rasterizer.
This effectively adds support for a lot texture formats in the rasterizer.
2014-12-20 18:05:53 +07:00
Tony Wasserka 0fba1d48a6 Pica: Implement texture wrapping. 2014-12-20 18:05:53 +07:00
Tony Wasserka c81f1a9ebc Pica/DebugUtils: Add support for RGBA8, RGBA5551, RGBA4 and A8 texture formats. 2014-12-20 18:05:53 +07:00
Tony Wasserka 782592e6d3 citra-qt: Fix invalid memory read upon program startup.
This was caused by the framebuffer display widget not checking whether we are actually in a valid emulation state or not.
2014-12-20 18:05:53 +07:00
Tony Wasserka fd2539121c Pica: Initial support for multitexturing. 2014-12-20 18:05:53 +07:00
Tony Wasserka 95be6a09b2 BitField: Add an explicit Assign method.
This is useful when doing crazy stuff like inheriting from BitField.
2014-12-20 18:05:53 +07:00
Tony Wasserka 8cd0d9c000 citra-qt: static-constify a map. 2014-12-20 18:05:52 +07:00
bunnei 2b0d7a1d29 Merge pull request #315 from chinhodado/master
Clean up some warnings
2014-12-20 11:59:18 +07:00
Chin e795692614 Clean up some warnings 2014-12-20 10:03:36 +07:00
Yuri Kunde Schlesner 82528ba7df Common: Add a clone of std::make_unique 2014-12-20 03:45:02 +07:00