Commit Graph

184 Commits

Author SHA1 Message Date
georgemoralis
f952d375a4 more settings porting 2025-11-27 17:08:55 +02:00
georgemoralis
761306188d more settings conversion 2025-11-27 13:01:29 +02:00
georgemoralis
b6d2748ed7 initial 2025-11-26 20:44:20 +02:00
Osyotr
544a22a431 emulator: crash faster (#2360)
By disabling Windows Error Reporting.
2025-11-20 22:35:35 +02:00
Stephen Miller
ee2bc97248 Windows: Limit address space maximum when higher addresses are not needed (#3775)
* Earlier initialization of elf info.

Everything used for elf info initialization comes from the param.sfo, so we can initialize this earlier to have this information accessible during memory init.

* Extract compiled SDK version from pubtoolinfo string

Up until now, we've been using the game's reported "firmware version" as our compiled SDK version. This behavior is inaccurate, and is something that has come up in my hardware tests before.

For the actual compiled SDK version, we should use the SDK version in the PUBTOOLINFO string of the param.sfo, only falling back on the firmware version when that the sdk_ver component isn't present.

* Store compiled SDK version in ElfInfo

* Limit address space for compiled SDK version at or above FW 3

Sony placed a hard cap at 0xfc00000000, with a slight extension for stack mappings. For now, though stack mappings aren't implemented, there's no harm in keeping a slightly extended address space (since this cap is lower than our old user max).

Limiting the max through address space is necessary for Windows due to performance issues, in the future I plan to properly implement checks in memory manager code to properly handle this behavior for all platforms.

* Use compiled SDK version for sceKernelGetCompiledSdkVersion

I think this is pretty self explanatory.

* Log SDK version

Since this value is what most internal firmware version checks are against, logging the value will help with debugging.

* Update address_space.cpp

* Update emulator.cpp

* Backwards compatible logging

Because that's apparently an issue now
2025-11-10 17:07:17 +02:00
georgemoralis
ff8869262f [Libs] Font lib HLE implementation (#2761)
* dummy fontlib libs

* register font libs

* typo fix

* added font error file

* added sceFontCharacterGetBidiLevel (from RE)

* fixup

* sceFontCharacterGetTextOrder , sceFontCharacterLooksFormatCharacters , sceFontCharacterLooksWhiteSpace RE

* sceFontCharacterRefersTextBack,sceFontCharacterRefersTextNext,sceFontRenderSurfaceInit,sceFontRenderSurfaceSetScissor  RE

* sceFontRenderSurfaceSetStyleFrame ,sceFontStyleFrameGetEffectSlant RE added

* clang fix

* sceFontStyleFrameGetEffectWeight

* added sceFontStyleFrameGetScalePixel

* Update types.h

* fixup merge
2025-11-04 17:14:22 +02:00
georgemoralis
ed9ffbfb64 Remove Qt from emulator (#3733)
* actions removal

* removed qt dir

# Conflicts:
#	src/qt_gui/check_update.cpp
#	src/qt_gui/translations/ar_SA.ts
#	src/qt_gui/translations/ca_ES.ts
#	src/qt_gui/translations/da_DK.ts
#	src/qt_gui/translations/de_DE.ts
#	src/qt_gui/translations/el_GR.ts
#	src/qt_gui/translations/en_US.ts
#	src/qt_gui/translations/es_ES.ts
#	src/qt_gui/translations/fa_IR.ts
#	src/qt_gui/translations/fi_FI.ts
#	src/qt_gui/translations/fr_FR.ts
#	src/qt_gui/translations/hu_HU.ts
#	src/qt_gui/translations/id_ID.ts
#	src/qt_gui/translations/it_IT.ts
#	src/qt_gui/translations/ja_JP.ts
#	src/qt_gui/translations/ko_KR.ts
#	src/qt_gui/translations/lt_LT.ts
#	src/qt_gui/translations/nb_NO.ts
#	src/qt_gui/translations/nl_NL.ts
#	src/qt_gui/translations/pl_PL.ts
#	src/qt_gui/translations/pt_BR.ts
#	src/qt_gui/translations/pt_PT.ts
#	src/qt_gui/translations/ro_RO.ts
#	src/qt_gui/translations/ru_RU.ts
#	src/qt_gui/translations/sl_SI.ts
#	src/qt_gui/translations/sq_AL.ts
#	src/qt_gui/translations/sr_CS.ts
#	src/qt_gui/translations/sv_SE.ts
#	src/qt_gui/translations/tr_TR.ts
#	src/qt_gui/translations/uk_UA.ts
#	src/qt_gui/translations/ur_PK.ts
#	src/qt_gui/translations/vi_VN.ts
#	src/qt_gui/translations/zh_CN.ts
#	src/qt_gui/translations/zh_TW.ts

* removed CMakePresets for qt builds

* clear cmakelists from qt

* sync config file with qtlauncher

* fixing review stuff

* Remove Qt code from memory patcher and add non-Qt fallback for automatic loading of patches
The second feature is disabled if IPC is present, to avoid conflicts with it.

* Add json submodule

* More Qt removal

* Documentation update

* fix build

* fix REUSE?

* removed qrc file

* fix clang

* Simplify Qt installation instructions for macOS

Removed instructions for installing x86_64 Qt on ARM and x86_64 Macs.

* Remove Qt installation instructions from guide

Removed instructions for downloading and configuring Qt.

---------

Co-authored-by: kalaposfos13 <153381648+kalaposfos13@users.noreply.github.com>
2025-10-31 10:28:39 +02:00
Niram7777
5c7f802233 VK Layer Settings remove deprecated (#3676) 2025-10-02 12:50:23 -07:00
georgemoralis
905c536ef4 make sys_modules folder configurable (#3657)
* make sys_modules folder configurable

* Update src/common/config.cpp

Co-authored-by: squidbus <175574877+squidbus@users.noreply.github.com>

---------

Co-authored-by: squidbus <175574877+squidbus@users.noreply.github.com>
2025-09-26 12:35:43 -07:00
Vinicius Rangel
71f343d2d6 Impl sceSystemServiceLoadExec (#3647)
* Add support for restarting the emulator with new configurations

- Implement `Restart` function in `Emulator` to enable process relaunch with updated parameters.
- Modify `sceSystemServiceLoadExec` to use the restart functionality.

* Add logging for emulator restart and system service load execution

* Add IPC emulator PID output command

Impl `PID` output command to return the emulator process ID
- required for launches supporting emulator restart

* Add log file append mode support (used after restarting to keep the same log file)

* Keep game root between restarts

* add --wait-for-debugger option flag

* add --wait-for-pid flag

used for sync between parent & child process during restart

* impl restart via ipc

* fix override game root

* add qt flags to allow restart
2025-09-25 23:01:52 -03:00
kalaposfos13
f01b6295dd Make UpdatePlayTime not depend on Qt (#3629)
* Make UpdatePlayTime not depend on Qt

* sir clang offnir, the all-formatting
2025-09-19 18:34:21 +03:00
Missake212
c885b522db log copy gpu buffers (#3587) 2025-09-13 11:39:50 +03:00
rainmakerv2
319db3bebe Qt: Add GUI for game-specific settings (#3533)
* Open settings dialog from context menu

* initial version complete

* add context menu item to delete game config if it exists

* Create game config from base value instead of default value

* Require confirmation before deleting game configs with menu item

* fix rebase

* Reset game specific values when creating a new game config

* Add icon for entries with game config

* clang format

* Add submenu for game-specific settings

* Log if game-specific config exists, remove hidden tab from tab selection

* Add other experimental options to game-specific GUI

* clang format

* Add flag to specify if game-specific file needs creation

* refactor: remove additional arguments, reset game-specific status on save instead

* Fix return

* cleanup - remove unneeded load

* Set tab to general if hidden tab is set as default

* Cleanup variable names and strings, default tab fix, volumeslider fix

* cleanup: missed a couple of variables to standardize

* More readable way to reset volume slider
2025-09-10 12:18:39 +03:00
UltraDaCat
5e3ffeafbe Replace Vblank Divider with Vblank Frequency (#3532) 2025-09-06 15:00:26 -07:00
Stephen Miller
0e7e100a7e Libraries: Np libraries cleanup (#3535)
* Np library cleanup

Moved all Np libraries to a Np folder, created files for Np error codes and structs shared between the libraries, removed empty auto-generated stubs from NpCommon and NpManager, and more things of that nature.

Also implemented sceNpGetAccountCountry, since we already had sceNpGetAccountCountryA anyway.

* Cleanup NpManager signed_out checks

The PR that introduced the PSN signed in status reverted some of the changes I'd previously made to improve accuracy.
Also they missed sceNpHasSignedUp, which just uses an internal variant of sceNpGetState for it's own check.

* Copyright dates

* Move signin check to NpManager RegisterLib

Hardcoding it the way I did caused it to read signin status before config was read.

* Fix RegisterLib names

Not sure why these weren't adjusted yet, so I've adjusted them myself.

* Fix NpCommon exports

* Basic parameter validation in sceNpDeleteRequest and sceNpCreateRequest

* More thorough request logic

Created an enum to capture the current state of each request, using a vector to store them.
I've made 3 states, none represents deleted requests, active represents requests that were made, but haven't been used yet, and complete represents used requests (a request cannot be used for multiple functions).

* Functions

sceNpCheckAvailability, sceNpCheckAvailabilityA, sceNpCheckNpReachability, sceNpGetAccountDateOfBirth, sceNpGetAccountDateOfBirthA added.

* sceNpGetAccountLanguage, sceNpGetAccountLanguageA

* sceNpGetGamePresenceStatus, sceNpGetGamePresenceStatusA

Also reduced debug logging for functions with early signed out returns, since those should behave identically to real hardware so long as you keep PSN emulation disabled.

* Fix sceNpGetAccountLanguage parameters

Oops

* sceNpGetNpReachabilityState

* sceNpGetParentalControlInfo, sceNpGetParentalControlInfoA

* Move OrbisNpState back to np_manager.h

Until this sees use elsewhere, this doesn't need to be with np-wide things.

* Clang
2025-09-06 14:32:22 -07:00
squidbus
781f51afe7 emulator: Fix blank entry at end of sysmodules list. (#3523) 2025-09-05 05:32:20 -07:00
kalaposfos13
487bcaae85 Game specific configs (#3376)
* poc

* Set up variable game specific variable copies

* Set up getters to return the game specific option if it exists

* Avoid exceptions if a value isn't in the config

* Make sure the custom configs folder exists

* Update + review comments + rewrite

* The loathsome clang-formatter

* Specify which getter/setter is used everywhere
2025-09-04 21:25:04 +03:00
Stephen Miller
709a9ac0c8 Libraries: Improved libSceHmd stubs (#3442)
* Initial work

* More work

* More stuff

* Update hmd.cpp

* Separate Reprojection and Distortion functions

Mainly doing this to clean up the code, since these sub-libraries are fairly self-contained.

* Fix weird Git issue

* Improve error documentation

After thorough decompilation, it seems clear that Sony didn't really put much thought into how libSceHmd behaves with no headset connected.

* Fix sceHmdGet2DEyeOffset

* Update hmd.cpp

* Add sceHmdInternalGetDeviceInformation and sceHmdInternalGetDeviceInformationByHandle

Based entirely off decompilation, these two functions are internally the cause of much of my trouble with this library.
They're also called by libSceVrTracker, but I don't think we'll be LLE'ing that anytime soon.

* Cleanup

* sceHmdGetAssyError

Struct isn't fully decompiled, but since it goes entirely unused when PSVR is disconnected, it doesn't matter too much.
I'm pretty certain it's 4 floats though, based on what I've decompiled of this function.

* More organization and fixes

* sceHmdGetInertialSensorData

Behavior should be fully accurate, but I've left the stub log since I haven't decompiled the parameters properly.
Also gave NID aTg7K0466r8 a proper name, based on what I've seen while decompiling. It behaves identically to sceHmdGetInertialSensorData, but with a slight difference in the params used for an internal function call.

* Update hmd.cpp

* Revert name change

* Organizational changes

These two functions modify internal variables used exclusively by reprojection functions.

* Remove internal device information calls

* Log PSVR-related attributes from param.sfo

Would mainly be helpful for compatibility list moderation, since these notices will be much more reliable for games that crash instantly.

* Remove unnecessary includes
2025-08-22 01:49:05 +03:00
rainmakerv2
2c906dc280 Log user CPU, total RAM, and OS (#3402)
* cpu info

Update cpu_info.h

Revert "Update cpu_info.h"

This reverts commit 6db3814e7f8162ca546c33479942d7204524b281.

Revert "cpu info"

This reverts commit cfecdf694fd7bee0fdf025c3933ff7b9498a1c3f.

hardware info

* log OS

* Round RAM, add space

* switch temporarily to local fork

* Update CMakeLists.txt

* set shallow = true for submodule

* Log logical cores as well

* point submodule to shadps4 fork
2025-08-14 13:04:08 +03:00
kalaposfos13
5b46216bae Make libSceRtc fully HLE (#3330)
* Add stubbed libkernel time functions

* Implement remaining stubbed Rtc functions

* Move Rtc from the optionally HLE loading part to the always loaded part

* Remove Rtc from the README list of LLE modules

* Mfw last second hotfix I noticed while double checking that everything's good before opening the PR
2025-08-06 20:08:26 +03:00
DanielSvoboda
42e3ce9465 Fix Play Time (#3377) 2025-08-03 23:13:30 +03:00
Marcin Mikołajczyk
ea37ea11fc Network config (#3292)
* Config entry isConnectedToNetwork

* Respect Config::isConnectedToNetwork when returning connection state

* Return connection status in NetCtlGetInfo

* Print connection data in log
2025-07-23 20:07:42 +03:00
kalaposfos13
68b147488e If CONTENT_ID is empty in param.sfo, try using TITLE_ID as fallback (#3258)
* If CONTENT_ID is empty in param.sfo, try using TITLE_ID as fallback

* Remove assert that is now not needed and fix me switching up variable names
2025-07-16 18:03:39 +03:00
TheTurtle
7d4b875ee3 Random fixes (#3216)
* buffer_cache: Handle inline data to flexible memory

* control_flow: Fix single instruction scopes edge case

Fixes the following pattern

v_cmpx_gt_u32 cond
buffer_store_dword value
.LABEL:

Before
buffer[index] = value;

After
if (cond)
{
    buffer[index] = value;
}

* vector_memory: Handle soffset when offen is false

When offen is not used we can substitute the offset argument with soffset and have it handled correctly

* scalar_alu: Handle sharp moves with S_MOV_B64

This fixes unable to track sharp errors when this pattern is used in a shader

* emulator: Add log

* video_core: Bump binary info search range and buffer num
2025-07-09 17:00:06 +03:00
Fire Cube
80f7ec2681 video_out: Internal Resolution Support (#3194)
* impl

* clang

* clang+

* update total_entries too
2025-07-07 19:17:56 +03:00
TheTurtle
df22c4225e config: Add toggle for DMA (#3185)
* config: Add toggle for DMA

* config: Log new config
2025-07-03 20:03:06 +03:00
TheTurtle
0594dac405 Readbacks proof of concept rebased (#3178)
* Readbacks proof of concept

* liverpool: Use span for acb too

* config: Add readbacks config option

* config: Log readbacks
2025-07-01 23:41:00 +03:00
georgemoralis
43321fb45a QT save fixes II (#3119)
* added recentFiles save/load

* gui language

* fixups for language

* fixed language issue with savedata (it was saving based on gui language and not on console language)

* clang fix

* elf dirs added

* added theme
2025-06-20 12:28:32 +03:00
Fire Cube
9981c8df03 Add option to ignore game patch (#3039)
* impl

* fix

* cleanup

* more

* clang +

* why
2025-06-10 12:30:45 -07:00
Fire Cube
c09d1c3cff Add support for game folder and fail early if eboot.bin is missing or corrupt (#3027) 2025-06-03 13:34:29 +03:00
kalaposfos13
1930a2132c Fix SSH remote links (#3025) 2025-06-02 19:02:37 +03:00
Fire Cube
149898193f Devtools: Add Module Viewer (#2976)
* impl

* add User or Sysmodule detection

* fix compiler warning

* clang

* fix string

* add HLE

* prevent crash

* fix mutex

* remove ref in arg

* cleanup

* move gamefolder to elfinfo
2025-05-24 09:15:10 -03:00
kalaposfos13
786ad6f71e Fork detection fixes IIIIX (#2966)
* Fix local builds

* Add remote fork windows title to release builds too

* Remove trailing slah from remote links before processing
2025-05-21 23:00:11 +03:00
squidbus
17b6343f18 emulator: Fix log initialization order. (#2878) 2025-05-03 13:47:03 -07:00
Stephen Miller
6c39bf229c libkernel: Various filesystem fixes (#2868)
* Proper handling of whence 3 & 4

* Accurate directory handling in open

Directories can be opened, and can be created in open, these changes should handle that more accurately.

* Mount /app0 as read only

On real hardware, it's read only.

* Proper directory flag handling.

Even when directory is specified, it will still succeed to open non-directories.

* Check for read only directories

* Earlier ro check in posix_rmdir

Hardware tests suggest these checks are in a different order

* Clear temp folder on boot

My tests rely on this, and some games do too.
Two birds with one stone

* Clang

* Add missing DeleteHandle calls

Whoops

* Final flags adjustment in sceKernelOpen

All my current tests are now hardware accurate.

* Fix truncates

Host ftruncate consistently fails on EINVAL, I'll need to test if this issue affected Windows too.

* Windows hacks

Windows is more limiting about how folders are opened and things like that. For now, pretend these calls didn't error.
Also fixes compilation for Windows

* Final touch-ups

After expanding my test suite further, I found a couple more edge cases that needed addressing.
Bloodborne audio is still broken, I'll look into that soon.

* Remove hacky read-only behavior in posix_stat

Bloodborne apparently uses the mode parameter here when querying it's audio files, and the mode we returned led to it disabling audio entirely.

* Clang

* Cleaner code

* Combine fsync and sync flags

According to FreeBSD docs, the "sync" flag is synonymous with the fsync flag, and is only included to meet the POSIX spec.

* Log if any currently unhandled flags are encountered.

These are rare and probably not too important, but log a warning when they're seen.

* Update file_system.cpp

* Update file_system.cpp

* Clang

* Revert truncate fix

Using ftruncate works fine after moving the call to before the proper file opening code.

* Truncate before open

Open the file as read-write, then try truncating.
This fixes read | truncate flag behavior on Windows.

* Slightly adjust check for invalid flags

Any open call with invalid flags should return EINVAL, regardless of other errors parameters might cause.
2025-05-01 14:47:43 +03:00
georgemoralis
bb59cd81fa [Libs] sceNet (#2815)
* implemented sceNetGetMacAddress

* added all error codes

* added ORBIS_NET_CTL_INFO_DEVICE , ORBIS_NET_CTL_INFO_MTU

* RE sceNetConnect

* sceNetBind RE

* RE sceNetAccept

* RE sceNetGetpeername ,sceNetGetsockname

* fixup

* RE sceNetListen ,sceNetSetsockopt

* sceNetShutdown,sceNetSocket,sceNetSocketAbort,sceNetSocketClose

* sceSend,sceSendTo,sceSendMsg

* sceNetRecv,sceNetRecvFrom,sceNetRecvMsg RE

* some kernel net calls

* init winsock2

* logging

* sockets interface

* added winsock to SCE* error codes conversion

* implemented net basic calls

* some net calls implementation

* clang fixes

* fixes for linux+macOS

* more fix

* added sys_accept implementation

* more posix net calls

* implemented sys_getsockname

* fixed redirection

* fixed posix socket?

* posix_sendto , recvfrom

* added sys_socketclose

* unsigned error log

* added setsocketoptions

* added more posix net calls

* implement getsocketOptions

* stubbed p2p calls
2025-04-30 17:58:39 +03:00
squidbus
9d2175180e build: Move versioning to CMake file. (#2752) 2025-04-07 12:22:51 +03:00
georgemoralis
5c72030fb8 HLE discmap (#2686)
* HLE discmap

* improved parameters naming

* fixed typo
2025-03-25 23:54:32 +02:00
kalaposfos13
99332e4ec2 Handle "-patch" as the suffix for game update folders (#2674)
* Handle "-patch" as the suffix for game update folders

* clang

* clang 2
2025-03-23 23:24:49 +02:00
Vinicius Rangel
5691046dcc Renderer fixes (Splash + Aspect Ratio) (#2645)
Some checks failed
Build and Release / reuse (push) Has been cancelled
Build and Release / clang-format (push) Has been cancelled
Build and Release / get-info (push) Has been cancelled
Build and Release / windows-sdl (push) Has been cancelled
Build and Release / windows-qt (push) Has been cancelled
Build and Release / macos-sdl (push) Has been cancelled
Build and Release / macos-qt (push) Has been cancelled
Build and Release / linux-sdl (push) Has been cancelled
Build and Release / linux-qt (push) Has been cancelled
Build and Release / linux-sdl-gcc (push) Has been cancelled
Build and Release / linux-qt-gcc (push) Has been cancelled
Build and Release / pre-release (push) Has been cancelled
Update Translation / Update Translation (push) Has been skipped
* rewrite splash

removed Splash class
rewrite using imgui texture manager
fix crashes & old validation error

* handle games with abnormal aspect ratios
2025-03-13 18:10:24 +02:00
Stephen Miller
927f398658 core: Ensure logger is initialized when there is no param.sfo (#2542)
* Make sure log is initialized when there is no param.sfo

Helps with testing firmware elfs and probably some homebrew.

* Clang

* Clang
2025-02-26 14:51:02 +02:00
georgemoralis
42dd79a32d clang-format fix 2025-02-23 22:41:55 +02:00
Fire Cube
c38e1635ea Add option to save logfiles seperate for each game (#2504)
* add option to split log

* better naming

* fix

* fix

* fix formatting

* fix misspelling

* make clang conform

* clang fix
2025-02-23 22:30:11 +02:00
kalaposfos13
02ad2b78fa Fork detection: Fix Windows naming + add a new check for fork detection (#2321)
* Possible fix for Windows

* Check if remote.pushDefault is set when generating the remote link

* Remove left-in lines I missed before
2025-02-03 12:53:57 +02:00
kalaposfos13
be74f65864 Fix ccrash if remote is not set (#2291) 2025-01-31 00:14:13 +02:00
kalaposfos13
c77f62a738 Detect and log if the user is using a fork (#2219)
* Added fork detection

* Fallback to "origin" if branch is not found

* Add fork names to window titles

* clang
2025-01-30 22:45:49 +02:00
tomboylover93
e805b97520 Add Vulkan debug options to the Debug tab (#2254)
Co-authored-by: DanielSvoboda <daniel.svoboda@hotmail.com>
2025-01-30 18:34:31 +01:00
Vinicius Rangel
0358271b93 Savefixes vii (#2279)
* savedata: rewrite save memory functions to handle slot id & better backup management

* savedata: auto-restore backup if needed

* safe save backup shutdown

replaced exit by quick_exit
2025-01-30 09:45:48 +02:00
squidbus
46b5437fdf emulator: Use correct game folder mount when opening update eboot directly. (#2244) 2025-01-26 18:01:15 +02:00
kalaposfos13
3b92cd1c1a CLI: Add argument to pass an argument to the game (#2135) 2025-01-18 15:21:08 +03:00