Archiving Memory Addresses. (Gameshark)
Mar 16, 2017 14:44:05 GMT -5
Blyka, Dashe, and 3 more like this
Post by Trege on Mar 16, 2017 14:44:05 GMT -5
So Chiz and a few other people have started doing stuff like this, so I figure I'll join in as well. I'll be archiving my codes here in hopes of it hopefully helping hackers find a way to eventually mod the game if the interest is high enough. It'd be great to someday have fan created content in the official Legends 1 or 2 games.
The Codes :
Currently I'm seeing a trend and I have no idea if I'm right or not, but most moveable objects seem to be using slots and the slots are shared between different areas.
[*Hardcore_Mode] (Basically just a reversed invincibility code you never blink after getting hit or knocked down.)
300B52C0 0000
Downtown (Affects every car even in City Hall or Uptown, but car design is different per area.) Results may vary by gameshark version.
[*Police Car speed]
8009D2F0 0000
[Decides whether the police car will stop for stop signs or not.]
8009D2F1 0000 = (Slow down for turns and stop for signs)
8009D2F1 FFFF = (Never slow down and never stop for signs.)
[*Police Car Acceleration]
8009D388 0000
[*Grey Car?]
8009D0D8 0000
[*Grey Car acceleration?]
8009D170 0000
[*Blue Truck]
8009D3FC 0000
[*Blue Truck Acceleration]
8009D494 0000
[*Red Car Speed]
8009D1E4 0000
Updated!
[Car Lighting modifier] (This code is pretty fun to mess around with it changes the lighting colour of a car, the car it affects depends on your story progress oddly.)
8009D254 7700
8009D256 0077
[Car Pattern Selector] (This Code appears to modify the spawning patterns of cars, however if the wrong pattern is used, stuff happens... I still
don't fully understand this code)
3009D2B8 0000
3009D2B9 0000
These car speed values above also affect how fast some Reaverbots act or run (Sometimes even their bullets), which is what makes me think slots are being used, or some form of data sharing.
These codes have yielded pretty crazy results, such as below.
I'll be adding more codes to this thread as I discover them.
Added : 3/20/2017 3:01AM
Enemy Scaling Code
Using HEX calculation I discovered a way to find enemy model scaling addresses.
Enemy 1's HP in HEX = 0295F176
Enemy 1's HP in Decimal = 43381110
+0235
Turns it into Enemy 1's X Scaler in Decimal = 43381345
Convert that to hex and you should get
0295F261 (The enemy's X scaling address.)
Each scaler is 2 digits apart, anything between those 2 digits should be left alone.
Example
X Scaler = 0295F261
Y Scaler = 0295F263
Z Scaler = 0295F265
When you convert their Current HP address to a decimal just add +235 to the address then convert it back to HEX to find their scaler, this is for the PS1 version however it does not always work.
Keep in mind that every enemy in Megaman Legends 1 has two HP addresses, one for their current HP, and one for their previous HP. You want to convert their current HP address to decimal then add +235 to the address not their Previous HP address.
The Previous HP and Current HP are 2 byte addresses in cheat engine.
Address Examples :
Cheat Engine :
Current HP
0295F176 0000
Previous HP
0295F1BA 0000
Gameshark : (These are 16 bit addresses, the last 4 digits of each are the HP amount for Enemy #1.)
Current HP
8009F176 1E61
Previous HP
8009F1BA 1E61
Those Gameshark values should be consistent across NTSC-U versions of the game.
If you're using an emulator the first few digits will always be different from the last time you ran the game, only by converting cheat engine codes to Gameshark can you keep consistency the easiest way to achieve this is to use a Gameshark scanning plugin for your emulator, and to set it to some absurd value then search for that value in the Gameshark scanner. (Chiz's idea.)
The pattern is applied to the enemies I've encountered so far, in theory many things in MML1 should be tracable once you find just one value the object is connected to.
The new Gameshark Codes :
(The last 4 digits are the scaling amount.)
Enemy #1 X, Y and Z Scaler.
3009F261 0001 <= (The last digit should always be larger than 0)
3009F263 0001 <= (The last digit should always be larger than 0)
3009F265 0001 <= (The last digit should always be larger than 0)
(This code usually changes the scaling of the first entity you encounter. basically whatever order the entity was placed in.)
Enemy #2 X, Y and Z Scaler.
3009F621 0001
3009F623 0001
3009F625 0001
(Exactly the same as the first code, but for the 2nd enemy instead.
The Codes :
Currently I'm seeing a trend and I have no idea if I'm right or not, but most moveable objects seem to be using slots and the slots are shared between different areas.
[*Hardcore_Mode] (Basically just a reversed invincibility code you never blink after getting hit or knocked down.)
300B52C0 0000
Downtown (Affects every car even in City Hall or Uptown, but car design is different per area.) Results may vary by gameshark version.
[*Police Car speed]
8009D2F0 0000
[Decides whether the police car will stop for stop signs or not.]
8009D2F1 0000 = (Slow down for turns and stop for signs)
8009D2F1 FFFF = (Never slow down and never stop for signs.)
[*Police Car Acceleration]
8009D388 0000
[*Grey Car?]
8009D0D8 0000
[*Grey Car acceleration?]
8009D170 0000
[*Blue Truck]
8009D3FC 0000
[*Blue Truck Acceleration]
8009D494 0000
[*Red Car Speed]
8009D1E4 0000
Updated!
[Car Lighting modifier] (This code is pretty fun to mess around with it changes the lighting colour of a car, the car it affects depends on your story progress oddly.)
8009D254 7700
8009D256 0077
[Car Pattern Selector] (This Code appears to modify the spawning patterns of cars, however if the wrong pattern is used, stuff happens... I still
don't fully understand this code)
3009D2B8 0000
3009D2B9 0000
These car speed values above also affect how fast some Reaverbots act or run (Sometimes even their bullets), which is what makes me think slots are being used, or some form of data sharing.
These codes have yielded pretty crazy results, such as below.
I'll be adding more codes to this thread as I discover them.
Added : 3/20/2017 3:01AM
Enemy Scaling Code
Using HEX calculation I discovered a way to find enemy model scaling addresses.
Enemy 1's HP in HEX = 0295F176
Enemy 1's HP in Decimal = 43381110
+0235
Turns it into Enemy 1's X Scaler in Decimal = 43381345
Convert that to hex and you should get
0295F261 (The enemy's X scaling address.)
Each scaler is 2 digits apart, anything between those 2 digits should be left alone.
Example
X Scaler = 0295F261
Y Scaler = 0295F263
Z Scaler = 0295F265
When you convert their Current HP address to a decimal just add +235 to the address then convert it back to HEX to find their scaler, this is for the PS1 version however it does not always work.
Keep in mind that every enemy in Megaman Legends 1 has two HP addresses, one for their current HP, and one for their previous HP. You want to convert their current HP address to decimal then add +235 to the address not their Previous HP address.
The Previous HP and Current HP are 2 byte addresses in cheat engine.
Address Examples :
Cheat Engine :
Current HP
0295F176 0000
Previous HP
0295F1BA 0000
Gameshark : (These are 16 bit addresses, the last 4 digits of each are the HP amount for Enemy #1.)
Current HP
8009F176 1E61
Previous HP
8009F1BA 1E61
Those Gameshark values should be consistent across NTSC-U versions of the game.
If you're using an emulator the first few digits will always be different from the last time you ran the game, only by converting cheat engine codes to Gameshark can you keep consistency the easiest way to achieve this is to use a Gameshark scanning plugin for your emulator, and to set it to some absurd value then search for that value in the Gameshark scanner. (Chiz's idea.)
The pattern is applied to the enemies I've encountered so far, in theory many things in MML1 should be tracable once you find just one value the object is connected to.
The new Gameshark Codes :
(The last 4 digits are the scaling amount.)
Enemy #1 X, Y and Z Scaler.
3009F261 0001 <= (The last digit should always be larger than 0)
3009F263 0001 <= (The last digit should always be larger than 0)
3009F265 0001 <= (The last digit should always be larger than 0)
(This code usually changes the scaling of the first entity you encounter. basically whatever order the entity was placed in.)
Enemy #2 X, Y and Z Scaler.
3009F621 0001
3009F623 0001
3009F625 0001
(Exactly the same as the first code, but for the 2nd enemy instead.