Commit graph

1591 commits

Author SHA1 Message Date
Yuri Kunde Schlesner d52d859936 Kernel: Convert Event to not use Handles 2015-01-30 11:49:43 -02:00
Yuri Kunde Schlesner ad80ff1e32 Kernel: Convert Timer to (mostly) not use Handles 2015-01-30 11:47:07 -02:00
Yuri Kunde Schlesner 882b6fed75 Kernel: Convert Mutex to not use Handles 2015-01-30 11:47:06 -02:00
Yuri Kunde Schlesner 38e7122f23 Kernel: Convert AddressArbiter to not use Handles 2015-01-30 11:47:06 -02:00
Yuri Kunde Schlesner d9b19be1d9 Kernel: Convert Semaphore to not use Handles 2015-01-30 11:47:05 -02:00
Yuri Kunde Schlesner 4bb33dfc30 Kernel: Convert SharedMemory to not use Handles 2015-01-30 11:47:04 -02:00
Yuri Kunde Schlesner fc11aff955 Common: Fix SCOPE_EXIT to actually create unique identifiers. 2015-01-30 11:47:03 -02:00
Yuri Kunde Schlesner afc416c607 Additions to ResultVal to make it more convenient to use. 2015-01-30 11:47:02 -02:00
Yuri Kunde Schlesner b5ee4f9df9 Move VAddr/PAddr typedefs to kernel.h 2015-01-30 11:47:01 -02:00
Yuri Kunde Schlesner 9a345de2bd Kernel: Remove useless/duplicated comments; mark functions static 2015-01-30 11:47:01 -02:00
bunnei 206cabc0e4 Merge pull request #412 from purpasmart96/svc_table_cleanup
SVC: Update the SVC function table
2015-01-28 17:36:23 -05:00
bunnei b522cf4e6a Pica: Implement color/alpha channel enable. 2015-01-27 22:03:34 -05:00
bunnei b2c55bf772 Rasterizer: Implemented alpha testing. 2015-01-27 14:39:17 -05:00
Lioncash 7a3e371141 dyncom: Minor cleanup
Narrow scopes for the instruction variables. Remove unnecessary parentheses.
2015-01-27 08:51:18 -05:00
purpasmart96 62f4365db1 SVC: Update the SVC function table 2015-01-26 20:42:28 -08:00
bunnei 326c451758 Merge pull request #345 from purpasmart96/apt_stubs
APT_U: Stub some functions & misc changes
2015-01-26 23:13:54 -05:00
bunnei 547737f720 Update vfp.cpp
VFP: Changed a debug log to trace.
2015-01-26 21:38:53 -05:00
bunnei ff83d23ed5 GPU: Implement the remaining depth testing functions. 2015-01-25 23:34:14 -05:00
bunnei e7dd4d34aa Merge pull request #485 from Subv/more_servs
Services: Stubbed more services.
2015-01-25 22:13:13 -05:00
Subv 2ea60bdc7f Services/HID: Removed some files due to a rebase error 2015-01-24 15:54:24 -05:00
Subv c2e9990149 Services: Stubbed more services.
Implemented FSUser::CreateExtSaveData
2015-01-24 15:44:40 -05:00
bunnei cc34462b71 Merge pull request #410 from chinhodado/cleanup
Cleanup: Logging in Core
2015-01-24 00:41:10 -05:00
Lioncash e09fb7becc vfp: Clean up vertical alignment for instructions 2015-01-23 13:35:08 -05:00
purpasmart96 2dd23b6467 APT_U: Stub some functions & misc changes 2015-01-22 16:03:48 -08:00
archshift 92a75df9b1 cam_u.h: fix indentation
Withholding my profanity towards Xcode.
2015-01-22 12:51:53 -08:00
bunnei 92550013cf Merge pull request #493 from archshift/ptmplay
Stubbed some services
2015-01-22 13:25:19 -05:00
Lioncash 8810dfe1de dyncom: Minor cleanup
Removes some unused macros and cleans up indentation inconsistencies
2015-01-22 09:39:41 -05:00
bunnei 731154f79e WaitSynchronization: Added a result code for invalid result, fixed bug. 2015-01-21 20:49:43 -05:00
bunnei 68ddaaa2f5 Thread: Fix WaitSynchronization1 to not set register 1 on thread wakeup. 2015-01-21 20:48:46 -05:00
bunnei 4255f25647 Thread: Use std::find in CheckWait_WaitObject. 2015-01-21 20:48:46 -05:00
bunnei 2f3020a102 Mutex: Cleanup and remove redundant code. 2015-01-21 20:48:36 -05:00
bunnei f09806aed2 Kernel: Renamed some functions for clarity.
- ReleaseNextThread->WakeupNextThread
- ReleaseAllWaitingThreads->WakeupAllWaitingThreads.
2015-01-21 20:48:30 -05:00
bunnei 15b6a4d9ad Kernel: Changed "ShouldWait" to return bool and "Acquire" to return void. 2015-01-21 20:47:49 -05:00
bunnei c68eb15695 WaitObject: Renamed "Wait" to "ShouldWait", made "ShouldWait" and "Acquire" pure virtual. 2015-01-21 20:47:49 -05:00
bunnei 69c5830ef2 Event: Fix implementation of "non-sticky" events. 2015-01-21 20:47:48 -05:00
bunnei 9e6ec3b6cd Session: Change to a WaitObject. 2015-01-21 20:47:47 -05:00
bunnei d2759c578e Kernel: Reschedule on SignalEvent and SendSyncRequest, fix some bugs. 2015-01-21 20:47:47 -05:00
bunnei dde02f79af Mutex: Fix a bug where the thread should not wait if it already has the mutex. 2015-01-21 20:47:46 -05:00
bunnei 9412996c8f Kernel: Moved Wait and Acquire to WaitObject, added way to retrieve a WaitObject safely. 2015-01-21 20:47:46 -05:00
bunnei c06d64528a SVC: Removed a Sleep that made no sense
- Would deadlock the calling thread
- Code would never get hit anyways
2015-01-21 20:47:45 -05:00
bunnei 254e4ebd58 AddressArbiter: Changed to Kernel::Object, big cleanup, removed code that made no sense. 2015-01-21 20:47:45 -05:00
bunnei e5a9f1c644 Kernel: Get rid of WaitTypes and simplify lots of code, removing hacks. 2015-01-21 20:47:38 -05:00
bunnei 6deb1a0119 WaitSynchronizationN: Improved comments 2015-01-21 19:12:51 -05:00
bunnei 6643673f28 WaitSynchronizationN: Refactor to fix several bugs
- Separate wait checking from waiting the current thread
- Resume thread when wait_all=true only if all objects are available at once
- Set output to correct wait object index when there are duplicate handles
2015-01-21 19:11:47 -05:00
bunnei aa01c57ae9 Kernel: Separate WaitSynchronization into Wait and Acquire methods. 2015-01-21 19:10:24 -05:00
bunnei 627e96fc15 WaitSynchronizationN: Handle case where handles=nullptr. 2015-01-21 19:09:10 -05:00
bunnei f5c6d367c9 WaitSynchronizationN: Handle case where handle_count is invalid. 2015-01-21 19:09:09 -05:00
bunnei 064be2b86f WaitSynchronizationN: Handle case where handle_count=0. 2015-01-21 19:09:09 -05:00
bunnei 7faf2d8e06 WaitSynchronizationN: Implement return values 2015-01-21 19:09:03 -05:00
bunnei e4a5d8ad4f Event: Fixed some bugs and cleanup (Subv) 2015-01-21 18:43:50 -05:00
bunnei 1f7a04f05a Thread: Keep track of multiple wait objects. 2015-01-21 18:42:04 -05:00
bunnei 14cbbf4d9b Event: Get rid of permanent_lock hack. 2015-01-21 18:42:04 -05:00
bunnei 5e77e2e1de WaitObject: Added RemoveWaitingThread, fixed a bug, and cleanup. 2015-01-21 18:41:58 -05:00
bunnei c22bac6398 Kernel: Added WaitObject and changed "waitable" objects inherit from it. 2015-01-21 18:41:00 -05:00
archshift 1f109c6b49 Added HID_SPVR service and split HID_U implementation into service/hid/hid.xxx 2015-01-21 13:31:10 -08:00
archshift a68dda6328 Stubbed cam:u service 2015-01-21 12:50:18 -08:00
archshift 7516ceaf93 Stubbed ptm:play service 2015-01-21 12:50:18 -08:00
Tony Wasserka 8946df97b5 Merge pull request #429 from Kingcom/titlebar
Add option to hide dock widget title bars
2015-01-20 23:17:42 +01:00
Kingcom 76c74ffc96 citra-qt: Add option to hide dock widget title bars 2015-01-20 22:50:24 +01:00
bunnei 8571befc64 Merge pull request #498 from lioncash/statics
core_timing: Mark several variables as static
2015-01-20 14:34:07 -05:00
Lioncash a3f5e5605c core: Fix a few docstrings 2015-01-20 13:52:44 -05:00
Lioncash bfef0aa07e core_timing: Mark several variables as static
These are only used in this translation unit.
2015-01-20 13:49:10 -05:00
bunnei cbbe9e1500 Merge pull request #492 from archshift/apt
Expose GetSharedFont and NotifyToWait to APT:A and APT:S respectively
2015-01-20 12:55:53 -05:00
bunnei 205170fa62 Merge pull request #241 from linkmauve/better-loader
Improve the loader a bit
2015-01-20 12:55:28 -05:00
Lioncash 8c6edc680c dyncom: Clarify precedence for ternary statements 2015-01-19 20:35:55 -05:00
bunnei 004b23153b Merge pull request #494 from lioncash/shift
dyncom: Implement missing shifts in ScaledRegisterPostIndexed, etc
2015-01-19 16:42:31 -05:00
Chin fa8e6272c8 Cleanup: Logging in Core 2015-01-19 16:01:06 -05:00
Lioncash a873f157d0 dyncom: Implement missing shifts in ScaledRegisterPostIndexed, etc 2015-01-18 18:32:02 -05:00
bunnei be8f665142 Merge pull request #383 from zhuowei/shared_page
Add some support for the shared page
2015-01-18 18:31:52 -05:00
archshift 4d316cbd8e Expose GetSharedFont and NotifyToWait to APT:A and APT:S respectively 2015-01-18 15:15:14 -08:00
Lioncash 8575010a68 dyncom: Handle the ARM A2 encoding of STRT/LDRT
These were also missing the shifted register case.
2015-01-17 13:53:35 -05:00
Lioncash 0a5d450e94 dyncom: Handle the ARM A2 encoding of LDRBT/STRBT. 2015-01-16 21:05:27 -05:00
Zhuowei Zhang edb8450420 Add some support for the shared page (currently 3d slider is implemented) 2015-01-15 22:16:13 -05:00
bunnei 2572a62480 APT: Fix typo in setting return code for NotifyToWait 2015-01-15 18:23:53 -05:00
bunnei 350c5a7e32 DSP: Removed useless spam log for SignalInterrupt 2015-01-15 18:20:58 -05:00
bunnei 4b47ed6194 Merge pull request #482 from yuriks/fix-vblank
Correctness fixes for GPU flipping and interrupts
2015-01-15 18:11:03 -05:00
Emmanuel Gil Peyrot df0d66c7cf Loader: Clean up the ELF AppLoader. 2015-01-15 22:23:08 +01:00
Emmanuel Gil Peyrot 84e52a944d Loader: Clean up the 3DSX AppLoader. 2015-01-15 22:23:08 +01:00
Emmanuel Gil Peyrot 08aaa33500 Loader: Clean up the NCCH AppLoader. 2015-01-15 22:23:08 +01:00
Emmanuel Gil Peyrot 2c24e539a2 Loader: Display the type of the file being loaded. 2015-01-15 22:23:08 +01:00
Emmanuel Gil Peyrot 82ec17db7d Loader: Guess filetype from the magic, or fallback to the extension. 2015-01-15 22:23:08 +01:00
Emmanuel Gil Peyrot 04622a859c Loader: Don’t assume the file hasn’t been read before. 2015-01-15 22:23:07 +01:00
Emmanuel Gil Peyrot b5237e885d Loader: Keep a reference to the file and pass it to the correct AppLoader, instead of loading it multiple times. 2015-01-15 21:21:26 +00:00
Emmanuel Gil Peyrot 2d63df90a9 Loader: Initialize the default NCCH values in the class declaration, not in the constructor. 2015-01-15 21:21:26 +00:00
Emmanuel Gil Peyrot 9d3bb8b7c0 Loader: Remove the useless THREEDSXReader class. 2015-01-15 21:21:26 +00:00
Emmanuel Gil Peyrot 85030c6e6b Loader: Never forget to change is_loaded. 2015-01-15 21:21:26 +00:00
Emmanuel Gil Peyrot 43e699d849 Loader: Don’t duplicate the docstring into the cpp file. 2015-01-15 21:21:26 +00:00
Emmanuel Gil Peyrot bc2212106f Loader: Fix indentation, whitespace, and a few other such cosmetic stuff. 2015-01-15 21:21:25 +00:00
bunnei 3ff5a80d46 Merge pull request #481 from Subv/hm_b
APTU: Stubbed NotifyToWait, taken from 3dmoo.
2015-01-14 21:39:49 -05:00
Sebastian Valle fd1b600e05 APT: Fixed the comment style in some variables 2015-01-14 10:14:22 -05:00
bunnei 394d44cf74 Merge pull request #480 from Subv/arb_2
AddrArbiter: Implement arbitration types 3 and 4.
2015-01-14 10:04:33 -05:00
Yuri Kunde Schlesner a09f71521e GPU: Fix buffer overrun in Display Transfers
Display transfers with the horizontal downscaling flag were calculating
the wrong output size, causing them to write double the amount of data
intended. It is likely that this was perceived as correct due to a
separate bug in calculating source indices which caused the image to be
padded unless the previous bug was present.

This fixes both issues, correcting flickering issues in 3dscraft,
blargSnes and more (caused by the transfer overwriting the back buffer
which followed) as well as potentially fixing other crashes.
2015-01-14 05:20:14 -02:00
Yuri Kunde Schlesner 7630b31672 GSP: Fix appending of interrupts to the shared memory buffer
The code was previously appending the interrupt to after the end of the
buffer, instead of at the end.
2015-01-14 05:20:13 -02:00
Yuri Kunde Schlesner 9e084826b8 GPU: Do periodic VBlank updates using CoreTiming 2015-01-14 05:20:13 -02:00
Yuri Kunde Schlesner e29dd76e12 GPU: Correct wrong default framebuffer address for sub-screen.
It appears this is a mistake, since the sub-screen has no right
framebuffer.
2015-01-14 05:20:13 -02:00
Yuri Kunde Schlesner 5961a2852d GSP: Update framebuffer info on all interrupts
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.
2015-01-14 05:20:12 -02:00
Yuri Kunde Schlesner 98e3274935 GPU: Fire GPU interrupts at the correct places.
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.
2015-01-14 05:07:35 -02:00
Subv 728c932dba APTU: Stubbed NotifyToWait, taken from 3dmoo.
Also renamed some handles in the APT:U service to be more descriptive.
Fixed a typo in InquireNotification
2015-01-13 19:18:10 -05:00
bunnei 93f36c49f7 Merge pull request #473 from archshift/pp3ports
Pica/Rasterizer: Add ETC1 texture decompression support.
2015-01-13 18:11:18 -05:00
Tony Wasserka f2b74b4fb3 Pica/Rasterizer: Add ETC1 texture decompression support. 2015-01-13 14:42:40 -08:00
Subv 9e2ae289b8 AddrArbiter: Implement arbitration types 3 and 4. 2015-01-13 14:49:26 -05:00
Subv cf071cd897 Services: Added some missing services.
cfg:s, ptm:sysm, apt:s.
apt:s is almost exactly the same as apt:u as per 3dbrew
2015-01-13 14:43:30 -05:00
bunnei 682e6bc8d9 Merge pull request #477 from lioncash/vfp
vfp: Remove dead code
2015-01-12 21:56:49 -05:00
bunnei 99c0716d4d Merge pull request #478 from archshift/pp3ports4
Pica/VertexShader: Implement the MAD instruction.
2015-01-12 21:55:35 -05:00
bunnei 65c12d2430 Merge pull request #470 from archshift/master
Pica/VertexShader: Implement JMPC/JMPU/CALLC/CALLU.
2015-01-12 21:45:38 -05:00
Tony Wasserka 2b9a9a45b7 Pica/VertexShader: Implement JMPC/JMPU/CALLC/CALLU. 2015-01-12 15:47:21 -08:00
Tony Wasserka e02db3904b Pica/VertexShader: Implement the MAD instruction. 2015-01-12 15:34:36 -08:00
Lioncash 9288893d29 vfp: Remove dead code 2015-01-12 15:24:57 -05:00
Lioncash f7770b83d4 dyncom: Fix 32-bit ASR shifts for immediates 2015-01-12 14:15:24 -05:00
Lioncash e16b35eb53 dyncom: Remove unused flag macros 2015-01-12 12:57:15 -05:00
bunnei 3683369500 Merge pull request #461 from archshift/callstack
Qt Callstack: Clear the callstack every time it's updated
2015-01-12 10:35:45 -05:00
bunnei f3a7b66267 Merge pull request #472 from lioncash/overflow
dyncom: Fix some more V-flag setting ops. Plus some cleanup.
2015-01-12 10:35:19 -05:00
Lioncash 2843d1b98b dyncom: Get rid of unnecessary outer-scope variables in InterpreterMainLoop 2015-01-12 01:11:46 -05:00
Lioncash 3ace75a49f dyncom: Fix overflow flag setting for ADD/RSB/RSC/SUB/SBC
Also cleans up CMN, and CMP.
2015-01-12 01:03:58 -05:00
archshift d670b7e522 Qt Callstack: Clear the callstack every time it's updated
This fixes the issue that old members of the callstack would stick around, even when the callstack shortened.
2015-01-11 21:47:28 -08:00
Lioncash 9c2c89b7e1 dyncom: Add a helper function for addition with a carry 2015-01-12 00:44:28 -05:00
darkf 67c644e317 Fix building on MinGW 2015-01-11 20:22:08 -08:00
Lioncash d2a05bbbc6 dyncom: Fix ADC overflow flag setting 2015-01-11 22:27:09 -05:00
bunnei b33380ca59 Merge pull request #456 from Subv/waitsync1
SVC: Wake up the thread after the delay in WaitSync1
2015-01-11 18:52:09 -05:00
bunnei 1da04a72a2 Merge pull request #467 from lioncash/msr
dyncom: Fix conditional execution of MSR
2015-01-11 18:51:03 -05:00
Lioncash eabfa5cf43 dyncom: Fix conditional execution of MSR 2015-01-11 18:45:45 -05:00
Tony Wasserka f1080de47d Merge pull request #437 from Kingcom/DebugMode
Replace OnCpuStepped signal
2015-01-11 21:28:18 +01:00
Kingcom 2bbc12e6c3 citra-qt: Replace OnCpuStepped signal by new signals DebugModeEntered and DebugModeLeft 2015-01-11 21:22:51 +01:00
bunnei 542b0b0057 Merge pull request #466 from Subv/wake
Thread: Prevent waking a thread multiple times.
2015-01-11 13:39:23 -05:00
Subv b68d51ed30 Thread: Prevent waking a thread multiple times.
If a thread was woken up by something, cancel the wakeup timeout.
2015-01-11 13:18:52 -05:00
bunnei 63d05fca36 Merge pull request #457 from Subv/qt
citra-qt: Fixed some Qt errors on initialization
2015-01-11 10:59:53 -05:00
Subv 38da198aa1 SVC: Wake up the thread after the delay in WaitSync1 2015-01-11 10:42:59 -05:00
archshift 3b555e2512 Stubbed y2r:u IsBusyConversion
There is no documentation available on this function, but we set the result to false as a stub.
This allows Super Little Acorns to move all the way in game with pp3c.
2015-01-10 22:47:31 -08:00
archshift 95be6ad7ae Added Archive ID to fs:USER debug logs involving opening the archive. 2015-01-10 14:32:11 -08:00
archshift 228843c43e Logging: Log all called service functions (under trace). Compile out all trace logs under release for performance. 2015-01-10 14:32:10 -08:00
Subv 115a4bfc9e citra-qt: Add explicit casts to prevent some warnings. 2015-01-10 15:55:52 -05:00
Subv 1b01938767 citra-qt: Fixed some Qt errors on initialization 2015-01-10 15:35:26 -05:00
bunnei 5a4b361f60 Merge pull request #455 from yuriks/handle-reform3
Kernel Lifetime Reform Pt. 3
2015-01-10 15:19:21 -05:00
bunnei e7d2118858 Merge pull request #342 from uppfinnarn/master
Build improvements
2015-01-10 02:03:07 -05:00
Yuri Kunde Schlesner 8ad41775cc Kernel: Start using boost::intrusive_ptr for lifetime management 2015-01-09 19:43:52 -02:00
Yuri Kunde Schlesner d751de7341 Kernel: Don't re-assign object's handle when duplicating one 2015-01-09 19:43:51 -02:00
bunnei 6ae12424df Merge pull request #444 from yuriks/handle-reform2
Kernel Lifetime Reform Pt. 2
2015-01-09 12:59:35 -05:00
bunnei 86e07124ad Merge pull request #436 from kevinhartman/system-core
Warn if a new thread is intended to be run on the system CPU core
2015-01-09 11:14:35 -05:00
Johannes Ekberg d7ad14ae20 Use -pthread where and only where needed
Passing -pthread to GCC as a flag makes it both link to libpthread, and make C standard library routines reentrant. This makes the additional explicit links unnecessary.

Additionally, on OSX, this is the default behavior, and clang will print a message about it being unused if it's present there.
2015-01-09 15:50:46 +01:00
Johannes Ekberg 7d7ab70279 Generic PLATFORM_LIBRARIES var
This both reduces redundancy in add_executable definitions, and makes it easier to link additional libraries. In particular, extra libraries are needed on OSX - see next commit.
2015-01-09 15:50:46 +01:00
Yuri Kunde Schlesner 78ea76e12f Thread: Fix nullptr access in a logging function 2015-01-09 04:02:28 -02:00
Yuri Kunde Schlesner 7f1557fbbd Thread: Rename thread_queue => thread_list 2015-01-09 04:02:17 -02:00
Yuri Kunde Schlesner 9bf8462b96 Thread: Reduce use of Handles and move some funcs to inside the class. 2015-01-09 04:02:15 -02:00
Yuri Kunde Schlesner ba72208cd4 Kernel: Move Thread's definition to the header file 2015-01-09 03:51:55 -02:00
Yuri Kunde Schlesner 7b3452c730 Move ThreadContext to core/core.h and deal with the fallout 2015-01-09 03:51:55 -02:00
bunnei d46f650036 Merge pull request #255 from Subv/cbranch_3
Implemented timers
2015-01-08 22:38:33 -05:00
Subv 40c1439c34 Core: Fixed a crash and removed some unused variables.
ARM_Disasm only has static methods, so there's no need to have an instance of it.
2015-01-08 21:49:41 -05:00
Subv 07044651ef SVC: Implemented the Timer service calls. 2015-01-08 21:22:14 -05:00
Subv fc842963c8 DynCom: Add a comment to GetTicks. 2015-01-08 19:46:00 -05:00
Subv 620d77b7e3 Timing: Use CoreTiming::GetTicks to keep track of ticks.
This will keep track of idle ticks for us, and fixes some tickcount-related issues
2015-01-08 19:39:14 -05:00