-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VMManager: Refactor and improve boot process #8975
Conversation
c072275
to
a4b0782
Compare
Discord rich presence no longer notes what game you are playing or if you are in the BIOS simply saying "No Game Running". |
Can we make it so the BIOS shows the region like |
I wasn't using a widescreen patch for Burnout 3, but bios set to 16:9, that's how Burnout widescreen works on PS2 too. Interesting that a widescreen patch for Burnout makes the demo crash, probably the emulator recognizes it's another game and doesn't like a Burnout 3 widescreen patch applied to NFSU2 demo. |
It's not really unusual, it unloads burnout and loads NFS, so a widescreen patch (in master) would be overwriting random NFS demo code. |
33c70df
to
4208634
Compare
I tested it and now Burnout 3 boots in French instead of Italian. I need to use complete boot to have Italian language ingame. My Burnout 3 PAL version SLES-52585 has 3 languages: French, German and Italian. |
it's possible the HLE regionparams isn't triggering with the new fast boot changes. |
Just a question, what does fast forward boot option do? |
fastforwards the bios part of the boot (which happens even in fast boot mode), until it starts loading the ELF file of the game. |
14793a2
to
8521e7c
Compare
Language selection should be sorted. |
Language selection in Burnout 3 is now fixed. Also i noticed a couple of really cool improvements. First, when i enter the NFSU2 demo OSD says that there are no widescreen or patches whatsoever, so it recognizes as its own game. Then another one i really like because i am using a 60 fps menu cheat. In nightly when i exited the NFSU2 demo and Burnout 3 rebooted it went back to 30 fps menu, like the cheats were disabled, now with this PR it goes back to 60 fps menus and it correctly applies all the cheats i have enabled. Really great PR. 👍 |
It looks like patches and gamefixes are applying immediately on disc swap, tried monster rancher 4 and the very second I double click on the disc to swap to (before it's even "inserted") it's loaded patches and settings, and the screen flashes as the GS config updates. However I'm mostly concerned about the patches. [ 254.6437] OSD [ChangeDisc]: Disc changed to 'Ghost in the Shell - Stand Alone Complex [SLUS-21006] (U).chd'. Here's a memcard for the SLUS-20702 version of Monster Rancher 4. You need to load the save, go to the Association, choose to retire the only monster, then get a new monster "from saucer" that will let you swap disc, choose one which has compatibility patches. |
[SAVEVERSION+] VM struct changes. - Serial/title is now linked to disc, instead of running ELF. - Save states can be created during BIOS boot. - Patches now apply based on the executing CRC, and only after the entry point starts executing (fixes multi-game discs). - Add "Fast Forward Boot" option. - Split achievements download and activation, downloads occur on initialization, but are not activated until after the ELF loads. - Prevent HostFS access while in PS1 mode. - Remove multiple sources of truth for ELF/CRC/etc. - Move ELF state from global scope to VMManager. - Prevent game fixes and hw fixes being active while booting game. - Simplify game update. - Flush recompilers after ELF loads. No point keeping boot code around which gets overwritten.
This is actually working as expected. GiTS has a "default" patch in the gamedb (i.e. "apply to all serials"), hence why it gets applied immediately on disc swap. The serial is tied to the mounted disc, so it reloads patches, and matches, because the GameDB is "default". IMO, gamedb should be fixed, rather than making things gross and hacky. Like I said the other day, having "default" patches doesn't really make sense, when the patch is dependent on the ELF, which is what the CRC is derived from... (I did refactor ReloadPatches() slightly and simplify it a bit, getting rid of the double serial storage, though.) |
The reason default exists is because there can be multiple versions of the game under the same serial with the same offsets for the patch, so to save having to write exactly the same patch multiple times, we use the |
For the record, we discussed the patch conflict issue - probably the best solution would be to have a whitelist of CRCs that the "default" patch should apply to, but that's a separate issue. |
Description of Changes
Rationale behind Changes
More wx cleanup. Less jank.
Stops games like Burnout 3's NFSU2 demo from crashing if you have widescreen patches enabled.
Gets rid of confusing "Booting PS2 BIOS" which is a holdout from the wx days, instead we load game settings at boot time.
Suggested Testing Steps