Commit Graph

5813 Commits

Author SHA1 Message Date
emoose f3cef986a3 [HID] Allow winkey driver to use the first unused user index
This removes the user_index == 0 requirement from the InputSystem code, and updates WinKeyInputDriver to use the first non-connected user index if it can.

Eg. if you had 2 XInput controllers plugged in, those two will take up user index 0 and 1, and keyboard will take user index 2.
If all four indexes are taken up already, the WinKey driver will be disabled.

(This is done by passing already-setup drivers to each drivers Setup function: since WinKey is the last to be setup, this'll let it query the XInput driver and find which user_index it should handle)
2020-03-20 20:54:41 +11:00
emoose 20866ed3fd [Xam/Content] Remove unused ResolveGameUserContentPath func
(not needed since we store this stuff inside GPD now)
2020-03-20 20:54:40 +11:00
emoose a901314143 [XAM] Allow loading profile from STFS (extracts package automatically!)
Profiles can now be placed as either an extracted folder with GPDs, or an STFS package, inside the Documents\Xenia\content\FFFE07D1\00010000\ directory
eg. Documents\Xenia\content\FFFE07D1\00010000\E0000E07FA53D7F1
(this roughly matches the same location as X360 stores it)

If loading an STFS package the package will first get extracted to <path>.dir/, and then the profile is loaded/saved into that directory.
(originally was going to mount the package and read everything in-memory, but then realized how hard adding new files/modifying/etc would be.. VFS doesn't allow mixing two devices into the same mount_path afaik)

Code for extraction is taken from xenia-vfs-dump (as StfsContainerDevice::ExtractToFolder)

A [XAM]profile_xuid config option is added too, which should let you pick which profile to load from the FFFE07D1\00010000\ folder if you have multiple there.
(at least I hope it should - something like "profile_xuid = 0xE0000E07FA53D7F1" will work I hope... cpptoml might have issues with hex digits though, not sure, will investigate later...)
If profile_xuid isn't set (left at -1), Xenia will just load whatever the first file/folder inside there is.
2020-03-20 20:54:40 +11:00
emoose 6192675209 [Base] Change DEFINE_uint64 -> DEFINE_int64, cpptoml seems to have issues with uint64..
Tried setting a uint64 setting to -1 (FFFF FFFF FFFF FFFF), which made it throw a out of range exception when loading the toml...
Internally it uses int64 to parse numbers, so I guess it doesn't work well with converting to uint64?
Changing everything from uint64->int64 seems to solve it though, now -1 works fine.
2020-03-20 20:54:40 +11:00
emoose c98f00795b [VFS] Fix STFS file table info being read in wrong endian 2020-03-20 20:54:40 +11:00
emoose 0d0952e375 [XAM/User] Fix AchievementPlatform definitions...
big oof
2020-03-20 20:54:40 +11:00
emoose 9c57e2bd69 [XAM/User] Store profile inside content root instead of next to EXE
eg. Documents/Xenia/content/profile/
2020-03-20 20:54:40 +11:00
emoose 91bdbab7e6 [XAM/Misc] Impl. IsSystem/IsXbox1/IsSystemExperience & FirstRunExperienceShouldRun exports 2020-03-20 20:54:40 +11:00
emoose 07f6185897 [XAM/User] Only add arcade games to profile if license_mask is set 2020-03-20 20:54:39 +11:00
emoose 9a092402bd [XAM/User] GetTitleId -> GetTitleData, check flags/titletype before adding to profile 2020-03-20 20:54:39 +11:00
emoose 644c80a451 [XAM/User] ...CreateTitlesPlayedEnumerator: sort titles by date played (thanks Gliniak!) 2020-03-20 20:54:39 +11:00
emoose 55b644d840 [XAM/User] Stub GetIndexFromXUID, add param to IsOnlineEnabled
Maybe can help with user_index issues? Not sure, dash still seems to use some wacky indexes sometimes..
2020-03-20 20:54:39 +11:00
emoose 1220a60913 [XAM/User] XamReadTile: support reading gamerpic from profile tile_64.png file 2020-03-20 20:54:39 +11:00
emoose c82830f84b [XAM/User] Add extra checks to XamReadTile, remove GetTitleSpa
GetTitleGpd should work fine for what we're using it for here... it could be a good idea to keep an instance of the current SpaFile of the running title and have a GetTitleSpa that returns that though, since I think some stuff like XamReadString might eventually need access to SPA data, not really sure yet though.
2020-03-20 20:54:38 +11:00
emoose 0ffef1c399 [XAM] Allow reading binary & unicode settings, but block AVATAR_INFO_1 2020-03-20 20:54:38 +11:00
emoose c388abd059 [XAM] Small XamUserCreateTitlesPlayedEnumerator tweaks + other fixups 2020-03-20 20:54:38 +11:00
emoose 8c3e92bb11 [XAM] UserProfile: Update ach/gamerscore info inside UpdateGpd, add dash checks to SetTitleSpaData 2020-03-20 20:54:38 +11:00
emoose a0fb55909b [XAM] UserProfile::LoadProfile: setup default settings 2020-03-20 20:54:38 +11:00
emoose f94603a3d9 [XAM] Update profile setting code to use new xdbf::Setting struct 2020-03-20 20:54:38 +11:00
emoose abbc647b68 [XAM] xdbf.h: const-ify some parameters 2020-03-20 20:54:37 +11:00
emoose 8da3ccfd69 [XAM] xdbf.h: add more achievement details (flags, comments..) 2020-03-20 20:54:37 +11:00
emoose 799d3a17d3 [XAM] xdbf_xbox.h: add X360 GPD settings structs + minor fixups 2020-03-20 20:54:37 +11:00
Gliniak 9893ee72f8 [XAM/User] XamUserCreateTitlesPlayedEnumerator - Skip titles without achievements
It mimics behaviour of real 360 dashboard that
skips info about demos and system apps

also smaller code style changes
2020-03-20 20:54:37 +11:00
Gliniak a2209ee210 [XAM/User] Implemented sketchy XamReadTileEx
Also changes to XamReadTile
2020-03-20 20:54:37 +11:00
Gliniak 86c445f259 [XAM/User] Resolved missing profile tab on 12xxx dashboard
It doesn't provide overlap pointer and requires instant response
2020-03-20 20:54:37 +11:00
Gliniak 2815244716 [XAM/User] Added descriptions and labels for achievements
Disclaimer: On old dash it causes memleak (slight),
newer dashboards allocates them only once which is solution for that.

Ps. If anyone have easy solution please implement it. Cheers
2020-03-20 20:54:36 +11:00
Gliniak d6e9612459 [XAM/Misc] Added stub for: XamIsXbox1TitleId 2020-03-20 20:54:36 +11:00
Gliniak 5dd015ad56 [User] Removed hardcode from XPROFILE_GAMERCARD_TITLES_PLAYED
(Now dashboard 9199 shows more reliable amount of games played)
2020-03-20 20:54:36 +11:00
Cancerous e901ea8376 stubs for 9199 (eventually) 2020-03-20 20:54:36 +11:00
Gliniak 78225c12ee [User] Added method for calculating gamerscore 2020-03-20 20:54:36 +11:00
Gliniak 692bc914f5 [XAM/Media] Added stub for: XamLoaderGetMediaInfo 2020-03-20 20:54:36 +11:00
Gliniak e320fcee1f [XAM/User] Added Stub for: XamUserIsOnlineEnabled 2020-03-20 20:54:35 +11:00
Gliniak b25fecea91 [XAM/User] XamUserGetGamerTag - added exception for user_index -1 (0xFF)
(Fixes gamertag in 9199 dash)
2020-03-20 20:54:35 +11:00
Gliniak c30b028be5 [Profile] Added dummy settings (This causes gamertag to appear) 2020-03-20 20:54:35 +11:00
Gliniak 4cec87cf1d [XAM] XamReadTile - Changed size of item_id 2020-03-20 20:54:35 +11:00
Gliniak dd86ff9449 [XAM/User] Implemented XamUserGetGamerTag 2020-03-20 20:54:35 +11:00
Gliniak 6b216d6a15 [XAM] XNotifyGetNext - Fixed null check for !param_ptr (Thanks randprint) 2020-03-20 20:54:35 +11:00
Gliniak a0f9f21f47 [XAM/Avatar] Added stub for: XamAvatarLoadAnimation
This enable running AvatarEditor

Disclaimer: Games that uses Avatars might crash
2020-03-20 20:54:34 +11:00
Gliniak 17b457bf1d [Kernel] Added few elemenmts to xeExGetXConfigSetting
This will allow to go inside "Console Settings" in NXE Dashboard
and fixes stability on older dashboards
2020-03-20 20:54:34 +11:00
Gliniak 11dfd2ed65 [XAM/Nui] Added stubs for: XamNuiIsDeviceReady, XamIsNuiAutomationEnabled 2020-03-20 20:54:34 +11:00
Gliniak 148fec9cd3 [XAM/Notify] XNotifyGetNext - Added check to assure if param_ptr is correct 2020-03-20 20:54:34 +11:00
Gliniak c160281e21 [Memory] Preallocate encrypted memory region
(Fixes dashboards up to 12625)
2020-03-20 20:54:34 +11:00
Gliniak 2d06b66d8f [XAM/Sketchy] Implemented XamReadTile 2020-03-20 20:54:34 +11:00
Gliniak 8b357fc0b3 [KERNEL] Do not convert time if provided time_ptr is invalid (Fixes Dark Souls crash) 2020-03-20 20:54:33 +11:00
Gliniak 0329007e6c [GPD] Implemented XamUserCreateTitlesPlayedEnumerator 2020-03-20 20:54:33 +11:00
Cancerous 22571492aa [Kernel] Make XHttpStartup succeed and add stubs for XHttpOpen and XHttpConnect that fail 2020-03-20 20:54:33 +11:00
Cancerous 9fe0230acb Revert "[Kernel] - Try to shut down XMP so games won't spam it's functions"
This reverts commit 2df353fdde.
2020-03-20 20:54:33 +11:00
emoose 96e2d8d12f [XBDM] Add impl. for DmGetXboxName, stub 5 functions
Stubs: DmGetXbeInfo, DmIsDebuggerPresent, DmRegisterCommandProcessor, DmRegisterCommandProcessorEx
This helps progress some debug builds of games, DmGetXboxName error codes are based on what some games seem to expect from it.
Will probably be a good idea to move most of this to xbdm_info.cc soon.
2020-03-20 20:54:33 +11:00
Cancerous 6beeb8c427 [Kernel] remove option to disable WSAStartup 2020-03-20 20:54:33 +11:00
Cancerous d4cfd903e5 [Kernel] - Try to shut down XMP so games won't spam it's functions 2020-03-20 20:54:32 +11:00