Commit Graph

5871 Commits

Author SHA1 Message Date
Cancerous 1708a24881 [Kernel] progress on xconfig captured from logging in dash and carrying over progress from the old repo 2020-08-05 18:54:48 -04:00
Cancerous 0d8428c772 [XAM] let swapdisk request be cancelled (fixes GTAV) 2020-08-05 18:22:37 -04:00
Gliniak b7bd389a27 [Kernel/Thread] Changed incorrect thread stack location (Fixes Nier) 2020-07-29 21:14:02 +02:00
illusion98 c1389cc5b1 Merge remote-tracking branch 'emoose/devicetype-fix' into canary 2020-07-28 10:14:55 +02:00
Gliniak 76a62d0416 Merge branch 'profile-gpds-rebase' of https://github.com/emoose/xenia into canary_new 2020-07-28 10:09:51 +02:00
Gliniak ca04efd7cb LaunchXexFile switched to const string_view instead of path
Added savedisk as possible savepoint
2020-07-27 10:43:06 +02:00
Gliniak 856cce8fe3 Fixed bugged resource locator (PR 1632) 2020-07-27 10:41:23 +02:00
Gliniak fe22352831 Added cctype to fuzzy.cc 2020-07-27 10:40:31 +02:00
emoose 2711d678ac [HID] Improved WinKey GetKeystroke code
Seems the double-keypress issue was because of XINPUT_KEYSTROKE_REPEAT: Xenia would add that to keyup events, but seems REPEAT is only meant for keydown (well SR1 treats it as a keydown event at least)
2020-07-24 21:22:40 +11:00
emoose 827a03c121 [HID] Remove keyboard_keyup cvar, doesn't seem needed anymore
I guess something to get CoD4 console working must have fixed SR1 double-keypress issue!
2020-07-24 21:22:40 +11:00
emoose 0b4834df9d [HID] Make WinKey GetCapabilities return success, fixes CoD4 console 2020-07-24 21:22:40 +11:00
emoose 9baeee9b27 [XAM/HID] Add more support for keyboards & fill in unicode member of keystroke
CoD4 requires the unicode member to write text into the dev console, Win32's ToUnicode function seems to work fine for this.
Xam functions have been updated to support keyboard devices too, which *should* let CoD4 detect the keyboard and let you use it to open console etc..
Seems the XEX still needs a 1 byte patch for it to work tho :( no idea why, does keyboard work on actual X360 without any patching?
2020-07-24 21:22:40 +11:00
emoose 8d51293d29 [HID] Add keyboard_keyup cvar (default true) since dash needs keyups to work properly
Made this a cvar since SR1 will double-press when it sees both keydown & keyup, strange.
2020-07-24 21:22:40 +11:00
emoose 0793e03068 [XAM/HID] Add keyboard_passthru cvar, allows XInputGetKeystroke to receive proper keyboard events
Maybe useful for debug games, or games modded to allow in-game consoles.
2020-07-24 21:22:40 +11:00
Cancerous 5bd89b4306 [HID] SDL Input fixes 2020-07-24 21:22:29 +11:00
emoose 4079a7bb8a [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-07-24 21:10:22 +11:00
illusion 0a2489d44c automatic aspect ratio change
aspect ratio will now change if internal resolution is set to anything 4:3
(i.e 640x480, 1024x768, 1600x1200.. etc.)
2020-07-15 05:22:45 +11:00
Cancerous 99ff1c9b19 [CPU] - skip some operations that cost precious time in mutex lock/unlock that are called frequently for some gains when not debugging 2020-07-15 05:22:45 +11:00
Cancerous b2c37c26ce [Config] - add cvars for internal resolution 2020-07-15 05:22:45 +11:00
Cancerous b3820be4da [CPU] Enable repetitive computation pass of optimizations from Chrispy 2020-07-15 05:22:44 +11:00
chss95cs@gmail.com bfc31f8706 Fixed shit precision in RECIP, made multiplication codegen less garbage 2020-07-15 05:22:44 +11:00
chss95cs@gmail.com 364937e836 Juicy optimization goodness 2020-07-15 05:22:44 +11:00
chrisps 27d12f1130 Smaller ComputeMemoryAddress/Offset sequence
Replace a movzx after setae in both ComputeMemoryAddressOffset and ComputeMemoryAddress with a xor_ of eax prior to the cmp. This reduces the length in bytes of both sequences by 1, and should be a moderate ICache usage reduction thanks to the frequency of these sequences.
2020-07-15 05:22:44 +11:00
chrisps a6e021ee3d Adding Xmm Select table, GetRawXMM 2020-07-15 05:22:44 +11:00
chrisps 53e9c06d3d Optimized CONVERT_I64_TO_F64 with neat overflow trick
Reduced instruction count from 11 to 8, eliminated a movq stall.
2020-07-15 05:22:44 +11:00
chss95cs@gmail.com 3587be4cd2 Added lea based multiply optimization for pow2+1 values below 16. Added magicgu2 division magic number optimization for INT_64 and INT_32. Added in my HIR optimization subpass but disabled all but 3 of the optimization rules. 2020-07-15 05:22:44 +11:00
Rados??aw Gli??ski 079fdfceca Fixed Mask incorrectness. Does mask_ == 0x01 means accept all?
Affected Games:
- Grid 2 (freezes)
- Skate. (Menu Soundtrack)
- Crackdown 2 Demo (ingame freeze)
2020-07-15 05:22:44 +11:00
illusion 332e8c0cbb CI: ugh
Temporary revert until margen fix it
2020-07-15 05:22:37 +11:00
Margen67 af4e3908b4 Canary-ize CI 2020-07-15 05:19:24 +11:00
Margen67 a1ea59cc55 [xenia-build] AVX(2/512) 2020-07-15 05:19:24 +11:00
Margen67 4b5a082704 Rename exe to xenia_canary 2020-07-15 05:19:24 +11:00
Margen67 68d78bd087 Update README.md 2020-07-15 05:19:24 +11:00
emoose 78c728b81d 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-07-15 04:35:43 +11:00
emoose 9719627296 Include XEX version in log 2020-07-15 04:35:43 +11:00
emoose c74c2a5511 Fix XEX version numbers not being output correctly
Couldn't find a way to get bitfields & byte-swapping to play well together, so this was the best I could come up with... at least the proper version numbers will show in the log file now :)
2020-07-15 04:35:43 +11:00
emoose b4f088fb00 Allow XEX to continue load after ApplyPatch fails This should be safe to do hopefully, most errors happen before any part of the XEX is modified, and the errors that can happen after modification should be very rare/impossible thanks to the earlier checks. It might be good to write up some way to revert any changes though... 2020-07-15 04:35:43 +11:00
emoose 602c1d1dac Check patch MediaID if patch signature check failed
This should let us make sure patches are being applied to the right XEX, without needing to rely on the signature.
2020-07-15 04:35:43 +11:00
emoose 35a3a60631 Fix heap corruption by XEXP header patch not resizing headers correctly This should hopefully fix GTA IV's TU (for media ID 6AC07221 at least) 2020-07-15 04:35:43 +11:00
emoose d47f2a6ef1 Fixes to allow games to make use of cache partitions
Happy new year! Here's my first commit of the 2020s :)

With these fixes, Halo 3 Epsilon will now write cached map data & other things (autosaves/datamine...) to the cache0/cache1 partitions, (as long as mount_cache cvar is set)
(Halo 3 retail will also write some things to cache with this, but oddly doesn't cache map stuff... which is strange because Epsilon was built only a day or two after the retail build, so I'm not sure why it'd work differently...
Maybe retail needs a TU applied for it to work or something like that)
Other games should hopefully work with cache now too (AFAIK the problem was in SDK library code, that a lot of games probably share)
No idea if this will actually improve anything though, but at least things will work closer to what games expect :)

The way this works is by tricking the cache-partition code (staticly linked into the game exe) into thinking that the Partition0/Cache0/Cache1 devices are valid.
To do that I made another kind of VFS device, the NullDevice, which just takes in a list of paths to handle.
Whenever an IO request is made to one of these paths, the NullDevice can simply pretend to the game that everything was successful, which satisfies the requirements needed for caching.

It also makes use of another trick: setting TitleInsecureCacheDrive XEX permission, which seems to skip a huge chunk of cache-init code (STFC filesystem device registration & stuff like that)
I'm not sure if this would work with every single revision of the STFC/cache code though...
At least in Halo 3 the retail code will handle the TitleInsecureCacheDrive case for us fine, but maybe older/more recent versions don't include functionality for it, need to look into it some more.
(I did try an impl. without needing this permission months ago, got pretty far with it but got caught on one tiny issue that I couldn't figure out... too bad I didn't find out about this permission earlier!)
2020-07-15 04:35:43 +11:00
Cancerous d6136ad8bc stubs for 9199 (eventually) 2020-07-15 04:35:43 +11:00
Cancerous 523fbcf130 further ajustment to buffer size to fix regression 2020-07-15 04:35:43 +11:00
Cancerous 5c7032c826 title update fixup - breaks xex1 temporarily 2020-07-15 04:35:43 +11:00
illusion98 79d6893eec Title Update fixup
Co-Authored-By: aerosoul94 <aerosoul94@hotmail.com>
2020-07-15 04:35:43 +11:00
Cancerous 144e2eb51c - adjusting XAMEnumerate buffer size to fix Angry Birds and Resonance of Fate - thanks Gliniak 2020-07-15 04:35:43 +11:00
Cancerous 6587672b19 icon fix 2020-07-15 04:35:43 +11:00
illusion98 6caa874305 Change default config file name 2020-07-15 04:35:42 +11:00
illusion98 5aee57cae8 Change window title
xenia -> xenia-canary
2020-07-15 04:35:42 +11:00
Cancerous 3be412ba84 New Icons 2020-07-15 04:35:42 +11:00
illusion98 2651a60712 Add command to show fps in titlebar 2020-07-15 04:35:42 +11:00
illusion98 7683e0847c Change ID and new description 2020-07-15 04:35:42 +11:00