Commit Graph

5624 Commits

Author SHA1 Message Date
Triang3l 126978d960 [Memory] Fix memory watch addresses 2019-08-16 08:49:48 +03:00
Triang3l 834ced0d63 [Memory] 0xE0000000: Fix a typo, re-enable and cleanup 2019-08-15 23:55:33 +03:00
Triang3l e862169156 [Memory] BaseHeap::TranslateRelative including host address offset 2019-08-15 00:31:21 +03:00
Triang3l 0451153760 [Memory] Temporarily disable allocation in 0xE0000000 2019-08-15 00:06:27 +03:00
gibbed 6ab7720951 [Kernel] Fix stray whitespace in license_mask definition. 2019-08-14 14:15:56 -05:00
Triang3l 003c02c640 [CPU, Memory] 0xE0000000 adjustment by @elad335 and mapping 2019-08-14 21:37:52 +03:00
illusion98 c021c7741d [Kernel] Add license mask as a config variable 2019-08-14 10:25:24 -05:00
Sandy Carter 3c3709dbe7 [CPU] Use c++ style cast 2019-08-14 06:42:30 -05:00
Triang3l 2507f1a819 [Memory] TranslateVirtual in shim and strings 2019-08-14 10:31:11 +03:00
Triang3l 0067f5561d [Kernel] More TranslateVirtual/HostToGuestVirtual usage 2019-08-14 08:28:30 +03:00
Triang3l 2152c79965 [Memory] 0xE… adjustment in TranslateVirtual 2019-08-14 00:07:27 +03:00
Triang3l 741b5ae2ec [Memory] Add HostToGuestVirtual and use it in a couple of places 2019-08-13 23:49:49 +03:00
Triang3l f1b9e1afce [CPU] Remove unused access violation handler variables 2019-08-13 00:06:29 +03:00
Triang3l 470f9946d6 [Vulkan v2] Present framebuffer clearing 2019-08-11 23:53:24 +03:00
Triang3l 490f3de853 [Vulkan v2] Swapchain ImageViews, error messages 2019-08-11 19:29:44 +03:00
Triang3l be6fa2b577 [Vulkan v2] Present loop 2019-08-11 17:49:01 +03:00
Triang3l 675034670e [Vulkan v2] Surface queries 2019-08-10 20:41:37 +03:00
Triang3l db2898e386 Merge branch 'master' of github.com:xenia-project/xenia 2019-08-10 14:52:54 +03:00
Triang3l fb656f3493 [Vulkan v2] GDK VkSurface 2019-08-10 14:52:33 +03:00
Jonathan Goyvaerts c621e01dd2 Add game_language as a config variable 2019-08-10 06:51:36 -05:00
Triang3l af93986c8f [Vulkan v2] VkSurface 2019-08-10 00:23:31 +03:00
Triang3l 30ba2619f3 [Vulkan v2] Properly include, clean up queue families 2019-08-09 22:40:55 +03:00
Triang3l 001120605b [Vulkan v2] Frames and fences 2019-08-08 23:58:02 +03:00
Triang3l 5744e6ba38 [Vulkan v2] Device and queue creation 2019-08-08 23:03:36 +03:00
Triang3l 940ef4ad7a [UI/GPU] Fix include order 2019-08-08 22:11:51 +03:00
gibbed 39c3f72c41 [Kernel] Implement RtlComputeCrc32. 2019-08-07 19:50:17 -05:00
Triang3l 2334e475de [Vulkan v2] Physical device, [D3D12] Small cleanup 2019-08-08 00:08:20 +03:00
Triang3l 40471dff32 [D3D12] Remove gflags from premake5.lua 2019-08-06 23:16:51 +03:00
emoose e68057affb
[Kernel] Update profile-gpds to work with latest master 2019-08-05 18:26:07 +01:00
emoose ad47cd7022
[Kernel] Allow loading info from "Account" file (gamertag etc)
This should let Xenia load in Account files from an actual 360, one step closer to fully supporting 360 profiles!

Only decrypts/reads atm, but the code is there for re-encrypting, maybe once new UI is ready we can make use of that for creating new 360-compatible profiles?
2019-08-05 18:26:06 +01:00
emoose 981eff5902
[Kernel] Move HmacSha function to seperate file, add RC4 2019-08-05 18:26:05 +01:00
emoose fa61106984
[Kernel] Remove redundant 'Xdbf' from names 2019-08-05 18:26:04 +01:00
emoose c1eaf6879a
[Kernel] Move XDBF code to its own namespace 2019-08-05 18:26:03 +01:00
emoose 8f5a82b444
[Kernel] Fix GpdFile missing default constructor & init dash with proper ID 2019-08-05 18:26:01 +01:00
emoose fa2cd63b1f
[Kernel] Add UserProfile::GetTitles, add title_id param to UpdateTitleGpd
Also changed GetTItleGpd to check for -1 to use current GPD (some games might be using 00... as title id, eg. protos)
2019-08-05 18:26:00 +01:00
emoose 00cffcacbb
[Kernel] Add GpdFile::GetTitleId() member 2019-08-05 18:25:59 +01:00
emoose 69eca79402
[Kernel] Format XdbfFile class members like rest of project
Oops, holdover from when this was XbdfWrapper :P
2019-08-05 18:25:58 +01:00
emoose 9b8ebcfe7b
[Kernel] Fix achievement iterator inside XGIUserWriteAchievements
Thanks to jgoyvaerts for noticing it!
2019-08-05 18:25:56 +01:00
emoose 40145b8dbb
[Kernel] Implement XamProfileEnumerate functions 2019-08-05 18:25:55 +01:00
emoose be8d85b168
[Kernel] Add --profile_directory flag, print achievements to log
Also added more error checking, and changed XELOG statements that use %ws to use %s & xe::to_string instead, seems to_string handles some non-latin strings better than %ws does.
2019-08-05 18:25:54 +01:00
emoose 66fca40b04
[Kernel] Update CreateAchEnum to actually use the title_id parameter 2019-08-05 18:25:53 +01:00
emoose 04fcdeb24d
[Kernel] GPD: Set unlock/played times, add missing SPA achievements to existing GPDs...
For example if a user applies a TU that adds achievements after already running the non-patched game, this should add any new achievements it finds.

Will also update the last_played time of a title when the SPA gets loaded in (on game launch), and also set the unlock_time when unlocking achievements.

Unlocking also only updates the title GPD (+ dash GPD) now, instead of needing to rewrite every GPD.
2019-08-05 18:25:52 +01:00
emoose faeddbd34d
[Kernel] Copy title image/name from SPA->GPD, fix XDBF free data...
Velocity should now load Xenia-created GPDs fine :D

To try it just make a new profile package in Velocity, inject GPDs from Xenia, and inject random Account file from a 360 profile.
Then close created package, use Tools -> Profile Tools -> Profile Editor to open the package you just created, and if all goes well the profile should load up fine.
2019-08-05 18:25:51 +01:00
emoose e510972691
[Kernel] Update XamUserCreateAchievementEnumerator to work with GPDs
Seems to work fine, tested with Tetris TGM ACE which uses achievements to track progression & unlock things in the game, and unlocking achievements in the GPDs does unlock things in game as intended.
Haven't actually tested unlocking the achievements in-game and then checking though (my tetris skills are awful :P), but I think it should work fine.

Strings aren't copied into it yet since I didn't want to alloc guest memory for every CreateEnumerator call...
Not many games actually have in-game achievement lists though, but I've added a placeholder string for any that might.

Like said in the comment, maybe we should alloc those strings in guest mem when the game GPD/SPA is first loaded in?
2019-08-05 18:25:49 +01:00
emoose 8368e8ce06
[Kernel] Let XGIUserWriteAchievements unlock achievements
XGIUserWriteAchievements seems to be the main (only?) way achievements are unlocked, when used that'll now try getting the GPD from UserProfile and unlock the achievements passed to it.

Dash GPD info is recalced and GPDs get written to disk whenever achievements are unlocked, letting achievements persist across instances.

TODO:
- "Achievement Unlocked!" UI, writing to log isn't much of an indicator :P
- XamUserCreateAchievementEnumerator, needs to return XACHIEVEMENT_DETAILS structs, which also contain pointers to strings in guest memory...
- Copy over more data from SPA? (need to check what data 360 copies to it)
- Optimize GPD writing, atm every GPD gets rewritten even if it hasn't been changed...
- Change profile folder path? Maybe allow using 360 profiles eventually?
- GPD settings
2019-08-05 18:25:48 +01:00
emoose 2a5ab07024
[Kernel] Let UserProfile load/save GPDs, convert SPA -> GPD on XEX load
UserProfile will now try loading dash GPD + any game GPDs from the "profile" folder when initialized.

After loading an XEX the title's SPA data gets passed to UserProfile, which will then either set current GPD based on title ID in the SPA, or create new GPD and copy achievements/images over to it.
2019-08-05 18:25:46 +01:00
emoose 734bbc7515
[Kernel] Add XdbfTitlePlayed support to GpdFile, used by dash GPD
Eventually user_profile would read dash GPD, loop through XdbfTitlePlayed entries, load GPD for each one...
Also eventually settings will be stored in dash GPD (eg. the ones currently defined in user_profile.cc)
2019-08-05 18:25:44 +01:00
emoose 00f3627715
[Base] Make Emulator::CompleteLaunch use SpaFile instead 2019-08-05 18:25:43 +01:00
emoose 52984280c3
[Kernel] Add achievement stuff to XdbfWrapper, convert it to a full XDBF parser...
XdbfWrapper would only wrap existing in-memory data, making modifying data (or creating new data) non-trivial.
The new XdbfFile class parses all the XDBF stuff into different vectors, making modifications a lot easier.

GpdFile and SpaFile are both children of XdbfWrapper, SpaFile has the same functions as the older XdbfGameData class, but now includes support for parsing achievements too.
The GpdFile class also supports achievements, and both classes parse into a common XdbfAchievement struct, which makes it simple to eg. copy achievements from a SPA file into a new GPD file.

TODO:
- images?
- GPD settings (user_profile has some code for this, not sure how much we can use here though...)
- modify user_profile to make use of this
2019-08-05 18:25:41 +01:00
gibbed 35e79d1979 [Base] Fix checks in cvar string escaping. 2019-08-04 21:55:06 -05:00