-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
My Fixups #5697
My Fixups #5697
Conversation
Epic! With this pr, "Transformers: The Game" is now properly saving and loading games, without that black screen. |
Yakuza Ishin no longer needs |
With this PR, [PROTOTYPE]™ [NPUB30389] no longer crashes when starting a new game. It freezes randomly after creating the save now, but it seems like it might be a race condition, since it doesn't freeze consistently at the same spot always. |
@RainbowCookie32 I know Prototype 2 stability is fixed by #5346, so I've created a build with this pr and that pr to check if the cause of the instability is related to that. |
I confirm that Battle Fantasia is playable again (linux, r9 fury, vulkan), which is great. |
Froze here with this build, the furthest I've got so far so it looks like Prototype also benefits with that PR's changes. |
@RainbowCookie32 So it's better than on master? I'm trying to figure out if its a regression from this pr or just a stability issue in general. |
Yep, that build is better than master. I don't think it's a regression on this PR. |
f328109
to
a6edd9e
Compare
sys_lwcond_wait unlocks always with the 'usual' unlocking flags
- Make RSXIOMem volatile. - Hint the compiler to check only once the address returned.
Block adding additional flush requests until the first ones are treated (by adding missing lock)
- From RE, only protocols SYS_SYNC_FIFO and SYS_SYNC_PRIORITY are valid - Use conditional atomic op store in a few places - Properly revert changes in sys_event_flag_set when aomic op fails
Confirm #5707 fixed here, thanks |
TODO: From hw testing, it seems like sys_memory_get_page_attribute and sys_rsx_context_iomap check page size a little differently get_page_attribute() always go by area flags, sys_rsx_context_iomap checks page by the page granularity This means that if the area page size 64k, but shared memory is mapped with SYS_MEMORY_GRANULARITY_1M It can be mapped for rsxio, but the page attribute will indicate 64k page size :thonk: rsxio memory is verified to need 1m pages.
@@ -373,9 +374,15 @@ static NEVER_INLINE error_code savedata_op(ppu_thread& ppu, u32 operation, u32 v | |||
|
|||
while (funcList) | |||
{ | |||
// Yield | |||
lv2_obj::sleep(ppu); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🤦♂️ Thanks
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
RSX-relevant code is ok
todo: hw testing testing shows imgae_in supports more source formats than r5g6b6 and a8r8g8b8 at core.
Alpha is always ignored.