Commit graph

284 commits

Author SHA1 Message Date
Nekotekina acd50eefaf Try to use designated initializers 2020-03-06 09:42:49 +03:00
Eladash f6cf36f6a7 Fix _sys_prx_get_module_info p0pt->filename writing with 0 size 2020-03-05 18:28:56 +03:00
Nekotekina Aux1 250736ece5 Fix warnings in emucore 2020-03-04 21:23:34 +03:00
Eladash d7dd4897f8 Allow 0x30000000 > addr >= 0x2000000 ppu loader exec allocations (workaround) 2020-02-29 13:06:14 +03:00
Ivan e133c7a7dc
Merge pull request #7506 from elad335/patch-1
PPU exec/ovlm ldr: restrict allocations
2020-02-27 22:55:30 +03:00
gamerforEA 93552a5958 Apply some Clang-Tidy fixes 2020-02-27 00:38:55 +03:00
AniLeo 3aa293a7a3 hle: cellAuthDialog
Basic RE of cellAuthDialog, stubs functions
2020-02-22 16:03:14 +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
Megamouse fe75311be2 move config structs to own files and clean up some headers 2020-02-17 15:08:17 +03:00
Eladash 812d03894b
PPU exec/ovlm ldr: restrict allocations 2020-02-16 22:48:23 +02:00
Nekotekina 3eca2d5d6c Remove legacy LOADER log channel 2020-02-01 07:49:38 +03:00
Nekotekina 1d0f359406 logs: add more log channels instead of GENERAL 2020-01-31 16:44:48 +03:00
Malcolm Jestadt ad8988afd3 Embedded SPU elf patching
- PS3 games include both PPU and SPU code in their PPU executables, so to make patching games that make use of the same SPU libraries easier, we add a system to find and patch them.
- Patches for this system still use SPU LS (Local Storage) addresses despite the fact that we aren't loading anything into SPU LS at this time. The patches are checked against each segment and patched in place.
2020-01-28 02:13:37 +03:00
Eladash a7aef22754 ppu: Log SELF header information and CIA of caller HLE functions 2020-01-27 01:21:40 +00:00
Eladash c2eb9a583d Implement ps3 application root flags detection 2019-12-31 22:22:06 +03:00
Nekotekina ad9c9f0183 C-style cast cleanup II 2019-11-30 18:17:45 +03:00
Eladash e8cc9d1f52 Loader: Fix default sdk version
Note: sdk version checks are unsigned checks, such value results in always true.
2019-11-10 14:32:15 +03:00
Nekotekina b48cdc2260 Use g_fxo for global ppu_module instance
Also fix autonomous PRX/SPU loading sequence.
2019-09-26 23:26:36 +03:00
Nekotekina e7d67f9732 Fix unwanted statichle_handler init 2019-09-21 03:59:43 +03:00
Nekotekina a4951ec407 Use g_fxo for global lv2_memory_container 2019-09-18 21:24:04 +03:00
Nekotekina dd79a5efb7 Remove fxm::make_always 2019-08-27 03:50:15 +03:00
Nekotekina ebdb0781fa Use g_fxo for statichle_handler 2019-08-27 03:50:15 +03:00
Nekotekina 84e44d3372 Use g_fxo for ppu_linkage_info 2019-08-27 03:50:15 +03:00
Nekotekina 7a00b5f809 Use g_fxo for patch_engine 2019-08-27 03:50:15 +03:00
Nekotekina d45c743877 Remove lib_loading_type::automatic
This is former default and is now obsolete.
2019-08-14 20:28:34 +03:00
Nekotekina cf16ee5eb5 Implement lib_loading_type::liblv2list 2019-08-14 20:28:34 +03:00
Nekotekina ae46333e99 Implement lib_loading_type::liblv2both 2019-08-14 20:28:34 +03:00
Eladash cbcd06d1dc ppu: Stack size allocation improvements 2019-08-11 21:43:13 +03:00
Eladash 3ce18fd960 Implement vm::page_executable (#6330)
Fixes segfaults when attenpting to set segfaults on non-executable memory.
2019-08-11 21:04:17 +03:00
Eladash 112ad9dda2 Allow to load liblv2.sprx with manual/both lib loading options (#6274) 2019-08-07 18:41:27 +03:00
Eladash 997e3046e3 vm/sys_overlay Improvements
- Implement sys_overlay_load_module_by_fd.
- Implement special segment allocation when ppc_seg flag is specified.
2019-07-28 14:23:58 +03:00
Eladash 3de885c7a6 Dealloc exec cache after sys_prx/overlay_unload_module
Must come before vm::dealloc of it.
2019-07-13 16:59:58 +03:00
Lassi Hämäläinen c963c51a60 Remove unnecessary header includes
- Manually removed lot of unneeded #includes to clean code and reduce
  compilation time
- Reordered some of the #includes to be in more logical order
2019-06-25 17:11:10 +03:00
Inviuz 52a12185a0 Initial sys_overlay 2019-04-10 23:25:09 +03:00
scribam f15eb88f59 hle: Fix cellSysutilAvcExt module
And add cellSysutilAvcExtSetChatMode and cellSysutilAvcExtSetChatGroup
functions
2019-03-31 00:55:55 +03:00
scribam a254a203bb hle: Add libad_async and libad_core modules 2019-03-27 21:41:44 +00:00
scribam 956d039415 hle: Add cellVideoPlayerUtility module 2019-03-24 19:16:49 +03:00
scribam 581b205f73 hle: Add cellPesmUtility module 2019-03-24 19:16:49 +03:00
scribam 6c40b9f3e0 hle: Add cellDtcpIpUtility module 2019-03-24 19:16:49 +03:00
scribam 32ae7e466c hle: Add cellNetAoi module 2019-03-24 17:29:18 +03:00
RipleyTom de5379a69f Static hle implementation 2019-02-27 22:54:59 +03:00
German 45c31a99a3 Fix true clear string container in PPUModule.cpp 2019-02-18 16:34:16 +03:00
eladash 587fe421ee Make ppu main_thread unjoinable 2019-01-25 18:04:33 +03:00
eladash a11d76249d Patch ppu main thread prio 2019-01-17 21:58:09 +03:00
eladash 79a6a2c7fb Debug console emulation 2018-12-30 20:12:32 +00:00
eladash 2ea061b9c7 Set total memory size according to sdkver 2018-12-30 20:12:32 +00:00
Nekotekina 1b37e775be Migration to named_thread<>
Add atomic_t<>::try_dec instead of fetch_dec_sat
Add atomic_t<>::try_inc
GDBDebugServer is broken (needs rewrite)
Removed old_thread class (former named_thread)
Removed storing/rethrowing exceptions from thread
Emu.Stop doesn't inject an exception anymore
task_stack helper class removed
thread_base simplified (no shared_from_this)
thread_ctrl::spawn simplified (creates detached thread)
Implemented overrideable thread detaching logic
Disabled cellAdec, cellDmux, cellFsAio
SPUThread renamed to spu_thread
RawSPUThread removed, spu_thread used instead
Disabled deriving from ppu_thread
Partial support for thread renaming
lv2_timer... simplified, screw it
idm/fxm: butchered support for on_stop/on_init
vm: improved allocation structure (added size)
2018-10-19 22:22:35 +03:00
Nekotekina 3ac1b46df2 Add option "HLE lwmutex"
Replaces lwmutex/lwcond implementation with alternative one
2018-09-09 01:02:19 +03:00
Nekotekina ce4c4696dd Try to get rid of SIZE_32 macro 2018-09-03 21:40:36 +03:00
Nekotekina 8abe6489ed Mega-cleanup for atomic_t<> and named bit-sets bs_t<>
Remove "atomic operator" classes
Remove test, test_and_set, test_and_reset, test_and_complement global functions
Simplify atomic_t<> with constexpr if, remove some garbage
Redesign bs_t<> to use class, mark its methods constexpr
Implement atomic_bs_t<> for optimizations
Remove unused __bitwise_ops concept (should be in other header anyway)
Bitsets can now be tested via safe bool conversion
2018-09-03 21:40:36 +03:00
Jake edeb858138 loader: ignore invalid index_value and allow relative reloc 10 2018-06-24 14:29:41 +04:00
Nekotekina 5d15d64ec8 Memory mirror support
Implemented utils::memory_release (not used)
Implemented utils::shm class (handler for shared memory)
Improved sys_mmapper syscalls
Rewritten ppu_patch function
Implemented vm::get_super_ptr (ignores memory protection)
Minimal allocation alignment increased to 0x10000
2018-05-09 23:35:34 +03:00
Nekotekina 78cfba158d Use lowercase for FNIDs for consistency 2018-03-22 23:24:58 +03:00
Nekotekina 2c6c8f1a25 Implement patch support for PRX
Store SHA-1 hash in ppu_module
2018-03-22 23:24:58 +03:00
Nekotekina 19944eeed0 Implement SPRX precompilation
Automatically precompile firmware modules
Add "Create LLVM Cache" menu (for games)
Reimplement jit_compiler::cpu as static method
2018-03-22 23:24:58 +03:00
Nekotekina cce0ad0c35 Clean vm::ps3 namespace use 2018-02-09 17:49:37 +03:00
scribam cd9bfba790 Add sceNpMatchingInt 2018-02-03 14:07:38 +00:00
Nekotekina 0a89f1db39 Fix primary stack size 2017-12-25 21:08:15 +03:00
Nekotekina 144f6809bf Implement CALL_FUNC 2017-10-05 19:51:37 +03:00
Nekotekina e5f756205c sys_net full rewrite
Implement sys_net syscalls
Clean libnet functions
Use libnet.sprx
Use libhttp.sprx
Use libssl.sprx
Use librudp.sprx
Implement sys_ss_random_number_generator
2017-10-05 19:51:37 +03:00
Nekotekina b9a0c107ab Fix library loading mode 'both' 2017-09-20 14:26:42 +03:00
Nekotekina 519f21db18 Exitspawn support renewal
Implemented _sys_process_exit2 syscall
Rewritten sys_game_process_exitspawn
Rewritten sys_game_process_exitspawn2
Implemented _sys_process_atexitspawn
Implemented _sys_process_at_Exitspawn
And some other changes
2017-09-19 15:07:07 +03:00
Nekotekina e789b969b0 Implemented MFF_HIDDEN for VNIDs
Minor refactoring
Now possible: ```REF_FUNC(...).flag(MFF_HIDDEN);```
2017-09-19 15:07:07 +03:00
RipleyTom e4105f46de Implement _sys_prx_get_module_info 2017-09-08 00:06:53 +03:00
Nekotekina 24f9f06279 Check FNID duplication 2017-08-13 21:39:08 +03:00
Nekotekina b05434bc6f Fix Firmware message 2017-08-05 17:07:30 +03:00
Nekotekina 7b4c044480 Relax allocations in ppu_load_exec 2017-08-04 14:33:53 +03:00
Jake 02845f546e Add gcm to auto lle / liblv2 2017-08-02 01:33:12 +03:00
Talkashie aeb01bd216 Update outdated firmware log message 2017-07-30 01:10:24 +03:00
Nekotekina 60c6bb9865 Restore hook static functions 2017-07-26 21:03:41 +03:00
scribam 9747ab61f9 Missing function names (HLE) and small fixes (#3038)
* Add sceNpScoreGetFriendsRanking and sceNpScoreGetFriendsRankingAsync functions

* Add sceNpSnsFbGetLongAccessToken function

* Add new functions for the sceNpTus module

* Add new functions for the cellSailRec module

* Stub cellCrossControllerInitialize

* Add sceNpAuth* functions for the sceNp2 module

* Remove unnecessary call to c_str()

* Add missing module id "CELL_SYSMODULE_ADEC_AT3MULTI"

* Add Turkish keyboard mapping constant

* Add cellOskDialogExtRegisterKeyboardEventHookCallbackEx function

* Update cellSubDisplay

* Update cotire version to 1.7.10

* Replace cellSubdisplay by cellSubDisplay

* Update cellSysutil.cpp with new functions stubbed
2017-07-21 18:41:11 +03:00
Nekotekina f91f2e3e6d Patch: add floating point support
Also count applied entries
2017-07-17 18:36:54 +03:00
Nekotekina e39ee10105 Patch system improved
SPU patch rewritten
PPU patch implemented
2017-07-17 16:49:46 +03:00
Nekotekina d8abe75526 Improved sprx boot (for devs only) 2017-07-14 01:47:00 +03:00
Nekotekina 7702eb2fa7 PPU: clean linkage info 2017-07-12 21:29:09 +03:00
Nekotekina 3278062c29 PPU: load only libsysmodule.sprx 2017-07-12 14:00:38 +03:00
Nekotekina 74f2be7307 PPU: free prx segments 2017-07-12 14:00:38 +03:00
Nekotekina f0d184f38b PPU LLVM: relocation support 2017-07-04 02:04:22 +03:00
Inviuz 645f0e63ab REF 57 plus FREF fix
kept bothering me until i realized what was wrong with it
2017-06-30 14:24:00 +03:00
Nekotekina 89f676de75 PPU: preparations (no fixes) 2017-06-26 16:56:13 +03:00
Inviuz 81ab6ab8b4 FREFS/weak imports and VREFS 4 and 6 2017-06-26 14:17:34 +03:00
Nekotekina d86858da64 Fix tabs 2017-06-24 14:25:11 +03:00
Nekotekina aea094730b PPU LLVM: paradigm shift
For now, compile only one block at time
Use tail calls to move between blocks
Fully write PPU context (except CIA)

This fixes many compatibility problems
2017-06-23 20:09:33 +03:00
Jake d3df83a3ea Sprx: loading / reloc fixes 2017-06-21 19:28:05 +03:00
Nekotekina f010b5b235 Configuration simplified 2017-05-20 16:01:48 +03:00
Nekotekina 88fef183a3 config.yml: Log section optimized 2017-05-15 14:37:05 +03:00
Nekotekina 08c955d177 Remove AutoPause.cpp 2017-05-11 19:05:41 +03:00
Nekotekina 8209e6c1e3 ppu_initialize_syscalls draft 2017-05-11 19:05:41 +03:00
Nekotekina 634f353ed4 Fix module initialization 2017-04-26 02:27:34 +03:00
Nekotekina d05b6135c6 Use libfs.sprx (LLE) 2017-04-26 02:27:34 +03:00
Nekotekina f7cb1aea64 Fix Lib Loading 2017-04-20 00:52:11 +03:00
Megamouse ff5295de32 Lib Loader Radiobutton (#2689) 2017-04-20 00:16:55 +03:00
scribam 8060cf9b19 Add cellRtcAlarm module (#2703) 2017-04-19 21:24:52 +03:00
Nekotekina 7428bb3025 HLE linkage rewritten 2017-04-16 17:44:19 +03:00
Ofek a5fd7abcf7 Trophy update (#2655)
* Added checksum check to TROPHY.TRP loader

* Implemented sceNpTrophyGetGameProgress, sceNpTrophyGetGameIcon & sceNpTrophyGetTrophyIcon

* Updates to up to date APIs and tiny changes

* Code style fixes for checksum verifier, and another fix for trophy functions

* Format fix
2017-04-13 20:29:47 +03:00
Nekotekina dc3d38c255 PPU Analyser: TOC detection
Improved TOC detection logic
Added "PPU Debug" option
2017-04-09 00:16:53 +03:00
Nekotekina d7c66fc949 ppu_analyse: use entry point 2017-04-08 23:51:54 +03:00
Zangetsu38 b3cb827526 Registers more functions missing.
Implement and stub cell_FreeType2.
Reorder cellRtc.
2017-04-08 22:32:59 +03:00
Nekotekina 69d86e39b9 Fixed auto LLE 2017-04-08 00:56:38 +03:00
Nekotekina ed7883ba07 PPU Analyser fix 2017-04-08 00:56:38 +03:00
scribam a1cc40e7b1 Add cellLibprof module (#2637) 2017-04-07 15:48:59 +03:00
Andrey 215a9f9e11 Gdb debug server (#2542) 2017-04-02 21:10:06 +03:00
Nekotekina cd9bd79639 AutoLLE: libhttp.sprx added 2017-03-27 01:15:41 +03:00
Ani 7ae2a8840b Register HLE libmedi, cellCrossController, cellSysutilNpEula
Motorstorm Apocalypse calls for cellMediatorGetSignatureLength,
cellMediatorCreateContext, cellMediatorGetProviderUrl,
cellMediatorGetStatus

LittleBigPlanet 2 and 3 may call for 0x37E1F502 (unknown name) on
cellCrossController

Resistance 3 and Uncharted 2 may call for the functions registered
on cellSysutilNpEula
2017-03-26 01:04:39 +03:00
Nekotekina 3bfe17a14f PPU: HACK instruction removed
Breakpoints fixed
2017-03-22 23:23:47 +03:00
Nekotekina 1b5a479bbd Auto LLE: cellSsl 2017-03-14 19:21:03 +03:00
Nekotekina 3648a058d1 Auto LLE update
libdtslbrdec.sprx removed
Some encoders added
2017-03-14 16:12:03 +03:00
Nekotekina 1c8cb3b7d3 Boot messages 2017-03-13 18:03:38 +03:00
Nekotekina 48b0583866 Default LLE option 2017-03-03 01:40:27 +03:00
Nekotekina 0eb6bf6a67 LLVM: splitting and caching 2017-02-26 20:14:18 +03:00
Nekotekina 9000407a77 cpu_thread::test_state added
lv2_obj::sleep adjustment
synchronization fixes
2017-02-22 13:23:21 +03:00
Nekotekina e8bfce4ebd decrypt_self() function
Fixed SPU self decryption
Fixed PSV debug self load
2017-02-11 21:36:48 +03:00
Nekotekina 8262d56574 PPU interpreter improved 2017-02-10 16:33:22 +03:00
Nekotekina b21fce4d6f IdManager improved
lv2_obj for kernel objects
Simple lookup (vector)
Another idm API refactoring
2017-01-29 21:37:04 +03:00
Nekotekina df6607e236 Minor fixes 2017-01-28 03:21:11 +03:00
Nekotekina 78ecb115f3 LLVM: progress dialog 2017-01-22 22:44:26 +03:00
Nekotekina 05fb57baff VERIFY macro removed 2016-08-15 03:13:31 +03:00
Nekotekina bdeccd889f cpu_type removed, system_type added
cpu_state -> cpu_flag
vm::stack_allocator template improved
ppu_cmd type changed to enum, cmd64 type added
2016-08-09 17:14:41 +03:00
Nekotekina a7e808b35b EXCEPTION macro removed
fmt::throw_exception<> implemented
::narrow improved
Minor fixes
2016-08-08 19:19:32 +03:00
Nekotekina 5a36c57c57 Formatting system improved
`unveil<>` renamed to `fmt_unveil<>`, now packs args to u64 imitating va_args
`bijective...` removed, `cfg::enum_entry` now uses formatting system
`fmt_class_string<>` added, providing type-specific "%s" handler function
Added `fmt::append`, removed `fmt::narrow` (too obscure)
Utilities/cfmt.h: C-style format template function (WIP)
Minor formatting fixes and cleanup
2016-08-04 21:34:00 +03:00
Nekotekina f8719c1230 PPUThread refactoring
`CallbackManager` removed, added _gcm_intr_thread for cellGcmSys
`PPUThread` renamed to `ppu_thread`, inheritance allowed
Added lightweight command queue for `ppu_thread`
Implemented call stack dump for PPU
`get_current_thread_mutex` removed
`thread_ctrl::spawn`: minor initialization fix
`thread_ctrl::wait_for` added
`named_thread`: some methods added
`cpu_thread::run` added
Some bugs fixes, including SPU channels
2016-07-30 16:35:02 +03:00
Nekotekina 39dadad534 PPU executable memory protection
Experimental commit, not improved for PRX
Also fixed minor bug in PRX loader
2016-07-24 21:06:09 +03:00
Nekotekina fc9fdca3f6 Make TLS great again
And clean System.h a bit
2016-07-19 14:06:39 +03:00
Nekotekina eb377f425c PPU LLVM: Analyser fix
ppu_branch_target removed
2016-07-14 16:27:14 +03:00
Nekotekina 94da0dbd4d PPU LLVM improvements
Removed interpreter dependencies
Reciprocal instructions improved
2016-07-12 17:33:13 +03:00
Nekotekina 06c6c8212d Minor fixes
elf_object
Loader fix
Analyser fix
2016-07-11 16:30:11 +03:00
Ivan 77594dc66c PPU LLVM: New analyser (#1858)
Minor fixes
VEX prefix support
2016-07-07 21:42:39 +03:00
Nekotekina 9db7de29fb Syscall analysis implemented 2016-06-27 16:43:56 +03:00
Nekotekina a8bebcba55 LLVM AOT 2016-06-19 21:29:48 +03:00
Nekotekina 6fa5e2cc7c PPUAnalyser.h added 2016-06-19 20:50:21 +03:00
Nekotekina e2d82394f6 Cell 2016-05-23 16:22:23 +03:00
Ivan aafcf44581 Header optimizations (#1684)
Shouldn't break anything. I hope.
2016-04-27 01:27:24 +03:00
Nekotekina c4e99dbdb2 Partial commit: Cell 2016-04-15 19:22:34 +03:00