jpd002 / Play-Compatibility

Play! - Compatibility Tracker
175 stars 25 forks source link

[SLES-50457] Rayman M #306

Open jpd002 opened 6 years ago

jpd002 commented 6 years ago

Last Tested On [02/02/2019] - https://github.com/jpd002/Play-/commit/1b3bfd112222570342b18db6cd0ca32ca287e477

Known Issues & Notes

Related https://github.com/jpd002/Play-Compatibility/issues/734

Screenshots

Goatman13 commented 1 year ago

Game expect VU0 to be little bit faster than EE core, or in sync. On VU0 side game loop on "beqz vi06, here" awaiting for ctc2 from ee side to change vi06 to 1 or 2. All this is getting out of sync after first run when VU0 program is zeroing vi06 to await in loop for another task. EE is supposed to change vi06 to non zero again. But at the time where vi06 is set to 0 by VU0, EE is already ahead of that ctc2 which set vi06 to 1. So that gets cancelled by that vi06 clear from VU0.

Game work fine when patched to not rely on ctc2, so i think my understanding of issue is correct. rman

Patch used to test (without patch game still hang, so status is unchanged).

    <Executable Name="SLES_504.57;1" Title="Rayman M" Region="EU">
        <Patch Address="0x001c997c" Value="0x4a0000b8" Description="Start MPG Manually." />
        <Patch Address="0x001c9b64" Value="0x4a0000b8" Description="Start MPG Manually." />
        <Patch Address="0x001c9bd4" Value="0x4a0000b8" Description="Start MPG Manually." />
        <Patch Address="0x001c9c24" Value="0x4a000938" Description="Start MPG Manually." />
        <Patch Address="0x001c9e7c" Value="0x4a000938" Description="Start MPG Manually." />
        <Patch Address="0x001c9ec4" Value="0x4a000938" Description="Start MPG Manually." />
        <Patch Address="0x001ca044" Value="0x4a000938" Description="Start MPG Manually." />
        <Patch Address="0x001ca08c" Value="0x4a000938" Description="Start MPG Manually." />
        <Patch Address="0x002fc910" Value="0x8000033c" Description="Remove wait loop, E bit instead." />
        <Patch Address="0x002fc914" Value="0x400002ff" Description="Remove wait loop, E bit instead." />
        <Patch Address="0x002fca40" Value="0x8000033c" Description="Remove wait loop, E bit instead." />
        <Patch Address="0x002fca44" Value="0x400002ff" Description="Remove wait loop, E bit instead." />
    </Executable>