Question about dynamic instructions
#1
Hello.
In the process of creating a patch (for the game metal gear solid 2) I came across areas of EE memory where instructions changed dynamically. For example, when changing the level, the instructions also changed, but only when the level changed. There is an animation speed modifier and I need it. But when the level changed, the address also changed, and the patch began to cause problems.
Could you tell me where this dynamic code comes from and how to change it so that it does not cause a breakdown.
Reply

Sponsored links

#2
https://forums.pcsx2.net/Thread-Post-you...#pid619129
https://forums.pcsx2.net/Thread-How-PNAC...#pid510834

You have to use conditional codes. Either D or E type, but as far as I have tested recently, D codes do not work in the PCSX2.
Reply
#3
(03-10-2022, 02:45 PM)Agrippa Wrote: https://forums.pcsx2.net/Thread-Post-you...#pid619129
https://forums.pcsx2.net/Thread-How-PNAC...#pid510834

You have to use conditional codes. Either D or E type, but as far as I have tested recently, D codes do not work in the PCSX2.

Code:
patch=1,EE,E027e5b0,extended,3c0140c0
patch=1,EE,0027e5b0,extended,3c014120

In Metal Gear Solid 2 - Substance (PAL) 
I found this address. At the level Deck-A, crews quarters - lui operator writes a floating point number that is 6 (character's running speed). But at the next level, the memory is overwritten and this same operator, which is again responsible for running speed, can be found in a different address.
Codes D to E either overwrite the data and in the next level or do nothing.
I tried to find where the value 6.0f comes from, but I didn’t get it
Reply
#4
D type (single address conditional code):
patch=1,EE,D027e5b0,extended,3c0140c0
patch=1,EE,2027e5b0,extended,3c014120
2 because it is a 32-bit write. Zero means a 8-bit write (so only 0x20 would be written there).

E type (multi address conditional code):
patch=1,EE,E00140c0,extended,0027e5b0
patch=1,EE,2027e5b0,extended,3c014120
40c0 is the lower 16-bit value to check at 0x27e5b0. 1 indicates that a one line below will be executed after passing the condition.
Reply




Users browsing this thread: 1 Guest(s)