Commit graph

608 commits

Author SHA1 Message Date
Nekotekina b05b16aedc sys_ppu: Hotfix for detached threads 2020-03-01 18:30:16 +03:00
InvoxiPlayGames ef6854ca46
sys_usbd: Guitar Hero Live controller emulation (#7336)
* Initial GHLtar emulation

* Add GHLtar to CMakeLists and VS project, zero the buffer and remove unused header values

* Fix coding style issues and include headers

* Remove redundant if, improve code formatting

* Remove needless includes

Co-authored-by: Ivan <Nekotekina@users.noreply.github.com>
2020-02-29 21:40:44 +03:00
Eladash 50f51be06a
Improve sys_timer_get_information (#7638)
* Improve sys_timer_get_information

* sys_timer_disconnect_event_queue sets STATE_STOP regardless of port connection status.
* sys_timer_get_information sets 0 for period and next_expire if the timer is stopped.

* Fix two minor races in lv2_timer thread

* If the timer thread is about to fire an event of queue x, then another thread disconnects the queue, then restarts the timer and connects the event queue, then the timer thread sends an event - event data combination (source, data1, data2, next) may be inaccurate.

* If the timer thread is about to send an event (periodically), then another thread stops the timer and starts it again with sys_timer_start_periodic_absolute, timer.expire in info->timer_state in sys_timer_get_information may be inaccurate.
2020-02-29 17:15:25 +03:00
Eladash 5a73943be6 Fix sys_timer_destroy
Also some cleanup.
2020-02-29 13:06:14 +03:00
Nekotekina a84077f174 sys_ss: use BCryptGenRandom on Win32 2020-02-29 12:15:42 +03:00
Nekotekina 490f58ff3c Try to purge thread_state::detached
It's rarely necessary, but can cause unexpected problems.
2020-02-28 21:11:13 +03:00
Nekotekina 65eeee0f4c Remove cancerous lf_value<>
Replace thread names (generic, PPU, SPU) with new shared pointers.
Devirtualize cpu_thread::get_name (used in single case).
2020-02-28 18:54:46 +03:00
Eladash 42a0512c66 cellSaveData: Avoid passing vm pointer to native API 2020-02-27 22:31:31 +03:00
gamerforEA 93552a5958 Apply some Clang-Tidy fixes 2020-02-27 00:38:55 +03:00
Eladash 4d3cdca7f6 Stub sys_spu_thread_group_set_cooperative_victims and syscall_253 2020-02-26 18:17:13 +00:00
Nekotekina b59bb16fad Threads: removed outdated on_abort detection deemed unnecessary
May cause regressions.
2020-02-25 15:48:25 +03:00
Nekotekina 5e75a0c497 Disable cotire on travis
Make some workarounds for clang because it poorly supports -Wold-style-cast
2020-02-21 17:03:54 +03:00
Nekotekina 972e0ab31d Remove -Wno-reorder and make it an error 2020-02-21 15:20:34 +03:00
Eladash 0c757222cb Minor improvements to sys_ss_random_number_generator
* Replace CELL_EABORT with exception.
* Improve error codes a bit.
* pkg_id == 1 should not return an error if root permission is present.
* Avoid passing vm pointers to native API, use temp buffer instead.
2020-02-21 14:49:45 +03:00
Eladash dd85e733d3 Fixup for #7304 2020-02-20 20:31:56 +03:00
Nekotekina 92e3eaf3ff Fix signed-unsigned comparisons and mark warning as error (part 2). 2020-02-19 22:54:58 +03:00
Nekotekina 771eff273b First part of fixing sign-compare warning (inside be_t). 2020-02-19 22:54:58 +03:00
Eladash f02b4801b2 Fix max SPURS threads regression 2020-02-18 19:20:40 +00:00
Eladash 727d783959 RawSPU: protect NPC from writes/reads in running state 2020-02-18 18:09:10 +00:00
Eladash fad8b38b28 sys_spu: protect sys_spu_image members in kernel mode
Save relevant info in idm, set sys_spu_image segs and nsegs members to 0.
2020-02-18 18:09:10 +00:00
Nekotekina c48ceafc15 sys_sync.h: fix warning (signed prio) 2020-02-18 14:53:23 +03:00
Nekotekina f08c778d2c Use more starts_with/ends_with.
Remove ends_with global func.
2020-02-18 14:53:23 +03:00
Megamouse fe75311be2 move config structs to own files and clean up some headers 2020-02-17 15:08:17 +03:00
Eladash bdab26ec09 rsx: rewrite io mappings
Along with some with fixes to cellGcmSys HLE.
2020-02-10 21:39:39 +00:00
RipleyTom 98f91457bf Small sys_usbd changes 2020-02-10 21:47:48 +03:00
Eladash 1915fe75a4 VSH: Stubs 2020-02-08 23:07:03 +03:00
Eladash f8b3c48af7
sys_spu: Implement proper SPU group flags (#7320)
* sys_spu: Implement proper SPU group flags
2020-02-05 20:46:05 +00:00
Nekotekina c0f80cfe7a Use attributes for LIKELY/UNLIKELY
Remove LIKELY/UNLIKELY macro.
2020-02-05 10:42:34 +03:00
InvoxiPlayGames c1180d76dd sys_usbd: Fix bug preventing multiple USB devices 2020-02-01 12:34:42 +03:00
Nekotekina 6dfd97f0b6 Modernize SPU logging (spu_log variable) and remove log legacy
Remove legacy macro (LOG_ERROR, etc)
2020-02-01 11:52:52 +03:00
Nekotekina 327bb2d8f0 Modernize PPU logging (ppu_log variable) 2020-02-01 11:52:24 +03:00
Nekotekina 21f7b0ff0f Remove HLE log channel 2020-02-01 11:52:24 +03:00
Nekotekina 15391f45d0 Modernize RSX logging (rsx_log variable) 2020-02-01 11:52:22 +03:00
Nekotekina 3eca2d5d6c Remove legacy LOADER log channel 2020-02-01 07:49:38 +03:00
Eladash 92466165f6
Increase Maximum Vblank Rate and Clocks Scale
Allow x30 times the speed of vblank rate + clocks scale of original PS3.
In theory a 60 fps limit game which scales frame limit perfectly with vblank rate can be played at up to 1800 fps with this change.

And:
* Fixed lv2 sleep with Clocks Scaling
* Make these settings dynamicaly adjustable.
* Avoid code duplication
2020-01-29 21:42:41 +01:00
Eladash 4e0070f16d Log sys_spu thread group and thread names
Also safely read thread name after relevant error checks passed.
2020-01-26 20:32:10 +00:00
Eladash 7ae679adbe Fix logging of ppu name in sys_ppu_thread_create/rename 2020-01-26 20:32:10 +00:00
Eladash e4ba096190 VSH: sys_mmapper
* Implement syscalls sys_mmapper_allocate_shared_memory_ext, sys_mmapper_allocate_shared_memory_from_container_ext.
* Implement multi-process shared memory allocations.
2020-01-24 20:08:30 +00:00
Eladash 46df58b662 sys_usbd: Add error_code 2020-01-24 19:25:52 +00:00
Eladash f05a3da964 Fix lv2_file::op_write regression 2020-01-21 16:45:41 +03:00
Nekotekina 3617f12a1e sys_fs: avoid possible out of memory on file reads/writes
Use fixed-sized intermediate buffer.
2020-01-20 16:00:20 +03:00
Nekotekina 63f67c88cc sys_fs: better stub sys_fs_fcntl(0xc0000006)
This syscall does something to classify filesystems by mountpoint.
2020-01-20 16:00:20 +03:00
Nekotekina 1b1b804d7e sys_fs: add /dev_flash mountpoint 2020-01-20 16:00:20 +03:00
Nekotekina 55cb96ab3b sys_fs: fix CELL_EIO condition in cellFsReadWithOffset 2020-01-20 16:00:20 +03:00
Eladash b07b5c9005 Fix sys_spu_thread_initialize for attr->name_len is 0 and attr->name is not null
If name_len is 0 name is empty, in any other case name is not empty (attr->name == nullptr isn't allowed in this case).
Check name_len and option for invalid values as fw.
2020-01-18 18:46:13 +03:00
Eladash 9d15083c61 Fix sys_ppu_thread_create/rename thread name range 2020-01-18 18:46:13 +03:00
Eladash 14b99d9e8b Write nread/nwrite in cellFsWrite/Read regardless of error checks 2020-01-18 15:56:05 +03:00
Nekotekina e2512e78b6 sys_fs: always close locked file in sys_fs_close
Syscall returns EBUSY but succeeds nevertheless.
2020-01-17 00:24:07 +03:00
Nekotekina a005090d3d sys_fs: use constant in sys_fs_disk_free 2020-01-17 00:24:07 +03:00
Eladash 1ccb3c4492 rsx: Verify local memory offset 2020-01-15 13:23:56 +03:00
Eladash 01035d35bd sys_process: Fix sys_process_get_id, add error_code (#7246) 2020-01-14 21:32:41 +03:00
Nekotekina aeed349a99 sys_fs: adjust permissions for /dev_bdvd
Remove write permissions returned by stat, fstat, etc.
Also make sys_fs_open return CELL_EPERM on write attempt.
2020-01-11 04:48:42 +03:00
Nekotekina 8447d75dda sys_fs: improve sys_fs_lsn_lock
It appears it does nothing only on /dev_hdd0 or /host_root (HOSTFS).
2020-01-11 03:44:52 +03:00
Nekotekina fc6356a74c sys_fs: adjust /dev_bdvd block size
From test.
2020-01-11 03:05:26 +03:00
Nekotekina 87cd653c6e sys_fs: improve sys_fs_disk_free
Fix error codes and arg checks.
2020-01-11 01:10:50 +03:00
Nekotekina 7e35fd54a8 sys_fs: improve sys_fs_fcntl(0xc0000002)
Always obtain free space on /dev_hdd0.
2020-01-11 01:09:30 +03:00
Nekotekina 582ee80552 sys_fs: correct block size for /dev_hdd1 2020-01-10 05:24:43 +03:00
Nekotekina 0b4b87f069 sys_fs: fix sys_fs_get_block_size
Don't check file existence on /dev_hdd0.
Relax check on some mountpoints.
Fix CELL_EISDIR error condition.
2020-01-10 05:19:18 +03:00
Nekotekina a8e1afa0af sys_net: fix sys_net_bnet_select arg check (nfds) 2020-01-10 03:21:27 +03:00
Eladash 71df5044fc sys_vm_get_statistics: Write timestamp 2020-01-09 20:43:03 +00:00
RipleyTom 4a5559ee65 Add buzz controllers to usb whitelist 2020-01-09 07:51:16 +00:00
Nekotekina 7523416a12 sys_fs: return CELL_ENOTSUP in sys_fs_fcntl(0xc0000006) 2020-01-09 04:15:20 +03:00
Nekotekina 9075208c80 sys_fs: fix logging in sys_fs_get_block_size 2020-01-09 04:15:20 +03:00
Nekotekina d477889763 sys_fs: fix mountpoint detection 2020-01-09 04:15:20 +03:00
Nekotekina f5cb147f8d sys_fs: improve sys_fs_get_block_size values
Affected other syscalls:
sys_fs_fget_block_size
sys_fs_stat
sys_fs_fstat
sys_fs_fcntl (cellFsGetDirectoryEntries, cellFsGetFreeSize)

For default values:
Return sector_size = 512.
Return 4th arg = 512.
Fod /dev_bdvd:
Sector size = 2048.
Block size = 2048.
2020-01-07 23:16:17 +03:00
Nekotekina 63e669c0cf sys_fs: fix sys_fs_fget_block_size
Return flags via last argument.
2020-01-07 21:55:19 +03:00
Nekotekina 9c54305e10 sys_fs: disable sys_fs_lsn_lock/unlock
According to test, nothing seems to happen.
Disable CELL_EBUSY errors associated with Stream Support API.
2020-01-07 21:55:19 +03:00
Nekotekina f3d52de429 sys_fs: Adjust flags of /app_home mountpoint 2020-01-07 21:55:19 +03:00
Nekotekina 55f9a56e45 Fix sys_tty_write (UTF-8 encoding of literals) 2020-01-06 23:23:04 +03:00
Nekotekina 4450ae0c7a sys_fs: fix CELL_FS_O_APPEND emulation
Don't use fs::append (not capable of).
Fix sys_fs_ftruncate (remove wrong workaround).
2020-01-05 18:15:55 +03:00
Nekotekina 9fc0aec066 sys_fs_stat: fix split file handling
Allow single-file case (consistently with sys_fs_open)
2020-01-05 18:15:55 +03:00
Nekotekina bed2d558a6 sys_fs: implement CELL_EROFS error
Implement lv2_mp_flag::read_only.
Currently only /dev_bdvd is affected.
2020-01-05 18:15:55 +03:00
Nekotekina d5f0957558 Implement lv2_fs_mount_point with mount point flags
Implement some actual mount points
Implement lv2_mp_flag::no_uid_gid
2020-01-05 18:15:43 +03:00
Eladash 872be25ed1 cellFs: Fix cellFsLseek with negative whence 2020-01-04 22:38:53 +03:00
Eladash 9d2c9e5d62 cellFs: Improve cellFsGetDirectoryEntries 2020-01-04 22:38:53 +03:00
Nekotekina 28fb0d1741 Fix lv2_fs_object::name
Recreate path from actual decoded components.
2020-01-04 21:44:03 +03:00
Nekotekina 691a57a4da Add BOM to sys_tty.cpp 2020-01-04 01:32:21 +03:00
Eladash 4c20881f8f Fixup after #6933 (#7166)
* fixup

* Get rid of obsolute arg in lv2_obj::awake

* nvm ill do this later

* Typo fix of the decade
2020-01-01 17:38:05 +00:00
Eladash 71c4a2a15f Silence some log messages 2019-12-31 22:27:27 +03:00
Eladash 9690854e58 Some cleanup
* Prefer default initializer over std::memset 0 when possible and more readable.
* Use std::format in trophy files name obtaining.
* Use vm::ptr<>::operator bool() instead of comparing vm::ptr to vm::null or using addr().
* Add a few std::memset calls in hle where it matters (or in some places just to document an actual firmware memcpy call).
2019-12-31 22:27:27 +03:00
Eladash c2eb9a583d Implement ps3 application root flags detection 2019-12-31 22:22:06 +03:00
Eladash 45cff1219c Allow sys_raw_spu_create_tag to be called more than once 2019-12-30 23:46:45 +03:00
Nekotekina ef8872c0d7 sys_net: fix sys_net_bnet_connect on Windows
Properly write is_connecting variable.
2019-12-29 21:53:43 +03:00
Nekotekina 01b1b21efd sys_net: add a workaround for WSAPoll with timeout
Don't call WSAPoll with empty socket list.
2019-12-29 21:24:13 +03:00
Nekotekina abe2cc196a sys_net: fixup for race condition
Don't reset is_connecting without checking correctness.
Also cleanup dead WIN32 code.
2019-12-23 22:39:18 +03:00
RipleyTom 90e4fe23c5 WSAPoll workaround 2019-12-23 22:31:09 +03:00
Jayveer 364ba95d26 Updated sys_net to use WSAPoll on win32 as this fixes connection issues
in Metal Gear Online. Also aligns with implementations on non win32
platforms
2019-12-13 21:52:29 +03:00
Eladash 5142d7c011 Minor fixup after #7068 2019-12-06 19:59:29 +03:00
Eladash 5631382623 sys_spu: Fix SPU Thread Id
* Removed wrong code in sys_spu_thread_group_terminate.
* SPU Thread ID is accurate, including 5th thread id "rule".
* Fixed possible use-after-free access of spu_thread::group member.
* RawSPU ID management simplified.
2019-12-06 19:59:29 +03:00
Eladash 98970884c8 Make sys_tty accurate in release console mode, message saving in log 2019-12-05 23:31:46 +03:00
Eladash a2c69e4a2e sys_spu_thread_group_dis/connect_event Improvements 2019-12-05 23:31:46 +03:00
Nekotekina bf11a28fb5 C-style cast cleanup IV 2019-12-01 22:12:33 +03:00
Nekotekina 28eacc616a C-style cast cleanup III 2019-12-01 00:32:44 +03:00
Nekotekina ad9c9f0183 C-style cast cleanup II 2019-11-30 18:17:45 +03:00
Eladash 8bd52c9843 Fix sys_spu_thread_un/bind_queue queue existence check 2019-11-28 01:54:45 +03:00
Eladash 9cc3838e49 Fix possible division by zero in sys_spu_thread_write/read_ls 2019-11-28 01:54:45 +03:00
Eladash b8220ec12f Stub sys_spu_thread_group_log 2019-11-28 01:54:45 +03:00
Nekotekina 2290c389d6 vm: implement vm::try_access, vm::ptr::try_read/write 2019-11-26 00:12:45 +03:00
Eladash fd433779bb sys_prx: Tiny improvement 2019-11-25 09:04:56 +00:00
Nekotekina f31233b822 sys_net: don't report SYS_NET_EWOULDBLOCK in blocking syscalls 2019-11-22 18:56:40 +03:00