OK, so every time in Metal Gear Solid 2 (other than the Trial Version) you enter a new area, the addresses for Item and Weapon quantities all change to another set of addresses (all in the same order, though)
I'm wondering if anyone has any experience or any way to counteract this from happening. I can't really cheat the game if the game keeps relocating the things I want to change every level.
So far I've traced the ration changing between atleast 9 different addresses, and it simply doesn't return to any previous address.
I know it may well be a pointer, but I've tried my luck and for some reason pointers simply don't work with PCSX2. I can only suspect it's because the processing goes through several bottlenecks, making results hard/impossible to discover.
In case this goes past anyone willing to help, for anyone who wants help cheating MGS2: All of the items are right next to eachother, 2 bytes apart.
Once you find say, the ration, let's say it's at 201EB5AA. There will be 2 items surrounding this address, one at 201EB5A8 and one at 201EB5AC. These 2 will have other addresses surrounding them similar distances from eachother.
This way you can get rid of snake's cigarettes, camera, give him binos, or mess with bandannas and wigs, which are variables whose quantity cannot be changed through normal play.
(08-31-2013, 11:20 PM)kinsokujiko Wrote: OK, so every time in Metal Gear Solid 2 (other than the Trial Version) you enter a new area, the addresses for Item and Weapon quantities all change to another set of addresses (all in the same order, though)
I'm wondering if anyone has any experience or any way to counteract this from happening. I can't really cheat the game if the game keeps relocating the things I want to change every level.
So far I've traced the ration changing between atleast 9 different addresses, and it simply doesn't return to any previous address.
I know it may well be a pointer, but I've tried my luck and for some reason pointers simply don't work with PCSX2. I can only suspect it's because the processing goes through several bottlenecks, making results hard/impossible to discover.
In case this goes past anyone willing to help, for anyone who wants help cheating MGS2: All of the items are right next to eachother, 2 bytes apart.
Once you find say, the ration, let's say it's at 201EB5AA. There will be 2 items surrounding this address, one at 201EB5A8 and one at 201EB5AC. These 2 will have other addresses surrounding them similar distances from eachother.
This way you can get rid of snake's cigarettes, camera, give him binos, or mess with bandannas and wigs, which are variables whose quantity cannot be changed through normal play.
try this instead 999/999 rations and some 999/999 granades
Main PC1:i5-4670,HD7770(Active!) Main PC2:i5-11600K,GTX1660Ti(Active!) PCSX2 Discord server IGN:smartstrike PCSX2 version uses:Custom compiled build 1.7.0 64-bit(to be update regularly) smartstk's YouTube Channel
You could just look at existing MGS codes;p, as far as I know all proper ones have pointers(codes starting with "6", through I admit I looked only at MGS3 codes since people cried it doesn't work on pcsx2 and yeah most advanced code types are recognized, but doesn't work on pcsx2) and that's exactly what you're trying to find and fail, probably only cause simple confusion. Finding a pointer can be somewhat confusing usually isn't exactly the address you want, for example it rather points to start of memory chunk game uses for something and moves around memory, not to exact location of HP or some item, but that should be clear if you even thought about pointers(hopefully;p), what's might not is that while the address is stored at 2xxxxxxx in pcsx2 the pointer will actually have an 0 instead of 2 there even through in emu you're only interested in 20000000-21FFFFFF(ee memory) in PS2 it starts from 0 hence the value stored in a pointer will look like that;p. Codes have different numbers there only cause as it never changes it's used as code type in them, in terms of an address it's always 0 which you could not know and searching for a pointer thinking otherwise would be a waste of time.
Most PS2 games if do typically just use lvl 1 pointer so it's pretty easy to find depending how much it changes and how much you understand of the confussion above and pointers itself, at times when the pointer is troublesome to find it might be simpler to just make an aob scan script to search for the address anew each time some code arround changes meaning stage change or something alike. Additionally to being simpler AOB scan has also different point ~ depending how you make it, cheats could work for all game versions easily since while address of the pointer changes between pal/ntsc versions quite surely ~ with aob scan it simply doesn't matter;p.
(09-01-2013, 02:34 AM)kinsokujiko Wrote: Thanks, is that for the NTSC version?
yes its NTSC
Main PC1:i5-4670,HD7770(Active!) Main PC2:i5-11600K,GTX1660Ti(Active!) PCSX2 Discord server IGN:smartstrike PCSX2 version uses:Custom compiled build 1.7.0 64-bit(to be update regularly) smartstk's YouTube Channel
Thanks a lot, man, they work. But my ammo never changing also makes it really hard to find where the weapon-ammo variables are.
Still, interesting stuff.
(09-01-2013, 03:07 AM)miseru99 Wrote: Additionally to being simpler AOB scan has also different point ~ depending how you make it, cheats could work for all game versions easily since while address of the pointer changes between pal/ntsc versions quite surely ~ with aob scan it simply doesn't matter;p.
I'm really sorry, but between complex technical terms and imperfect English, I had difficulty understanding that.
But this was really helpful, thanks a god damn bunch!! The AoB scan heavily speeds this up!
(09-01-2013, 10:30 PM)kinsokujiko Wrote: Thanks a lot, man, they work. But my ammo never changing also makes it really hard to find where the weapon-ammo variables are.
Still, interesting stuff.
i did not include the ammo cheat in my .pnach file only grenades and ration.
unlimited ammo is already took place using snake's bandanna by hunting dog tags.
Main PC1:i5-4670,HD7770(Active!) Main PC2:i5-11600K,GTX1660Ti(Active!) PCSX2 Discord server IGN:smartstrike PCSX2 version uses:Custom compiled build 1.7.0 64-bit(to be update regularly) smartstk's YouTube Channel
In that case, the Pnach you gave me doesn't work: incorrect CFC code, and changing it does nothing for my gameplay. Thanks, though, I'm glad I got help with this.
I'm still open to suggestions.
09-14-2013, 09:43 PM (This post was last modified: 09-15-2013, 02:01 PM by tadatada.)
First of all, I'm sorry long post below.
As you know, ammo address moving randomly.
In my experience of PAL.
M9 ammo address can search 3 ways below.
(1) Search string "r_tnk" and add 142(Hex) to the result address. (Tanker)
(2) Search string "r_plt" and add 292(Hex) to the result address. (Plant)
(3) Search string "r_vr" and add 292(Hex) to the result address. (VR)
* There are 5 or 6 hits. First 3 or 4 is correct in my experience. Try each address using Savestate. [You need the patience. :-)]
For example, how to research the M9 ammo address in Plant part.
(1) First of all, save the current Savestate.
(2) Search string "r_plt" -> hited #1 1ED624, #2 1ED850, #3 1ED8F8, #4 1EEE90 and others.
(3) Add 292(Hex) to #1 1ED624 is 1ED8B6.
(4) Try "101ED8B6 20" (2 bytes length)
(5) Ummm... M9 Ammo doesn't change.
(6) Reload the Savestate.
(7) Add 292(Hex) to #2 1ED850 is 1EDAE2.
(8) Try "101EDAE2 20" (2 bytes length)
(9) Ummm... M9 Ammo doesn't change too.
(10) Reload the Savestate.
(11) Add 292(Hex) to #3 1ED8F8 is 1EDB8A.
(12) Try "101EDB8A 20" (2 bytes length)
(13) Oh! Changed! This is the correct address!
(14) like that. :-)
These are also results of my reserch.
Offset(Hex), Items (Max quantity is depend on difficulty)
+00 M9
+02 USP
+04 SOCOM
+06 PSG1
+08 RGB6
+0A NIKITA
+0C STINGER
+0E CLAYMORE
+10 C4
+12 CHAFF.G
+14 STUN.G
+16 D.MIC
+18 HF.BLADE
+1A COOLANT
+1C AKS-74U
+1E MAGAZINE
+20 GRANADE
+22 M4
+24 PSG1-T
+26 D.MIC (N/A)
+28 BOOK
+48 Max M9
+4A Max USP
+4C Max SOCOM
+4E Max PSG1
+50 Max RGB6
+52 Max NIKITA
+54 Max STINGER
+56 Max CLAYMORE
+58 Max C4
+5A Max CHAFF.G
+5C Max STUN.G
+64 Max AKS-74U
+66 Max MAGAZINE
+68 Max GRANADE
+6A Max M4
+6C Max PSG1-T
+70 Max BOOK
+90 RATION
+92 SCOPE (N/A)
+94 MEDICINE
+96 BANDAGE
+98 PANTRZEMIN
+9A B.D.U
+9C B.AROMOR
+9E STEALTH
+A0 MINE.D
+A2 SENSOR.A
+A4 SENSOR.B
+A6 N.V.G
+A8 THERM.G
+AA SCOPE
+AC DC.CAMERA
+AE BOX 1
+B0 CIGS
+B2 LV.X CARD
+B4 SHAVER
+B6 PHONE
+B8 CAMERA
+BA BOX 2
+BC BOX 3
+BE WET BOX
+C0 AP SENSR
+C2 BOX 4
+C4 BOX 5
+C6 N/A
+C8 SCM.SUPR
+CA AK.SUPR
+CC CAMERA (N/A)
+CE BANDANA
+D0 DOG TAGS
+D2 MO DISC
+D4 USP.SUPR
+D6 SP.WIG
+D8 WIG A
+DA WIG B
+DC WIG C
+DE WIG D
To search is needed a kind of process memory editor or a kind of cheet code tools.
Some reason I can't say my favorite tool, but maybe you can find something like this tool anywhere.
Manage moving address using Pnach on pcsx2 is not practical I think.
I'm sorry if I make you confusing. (and not well my english)
That's a damn good system you got going there. Functions on NTSC Substance, too.
You mentioned ammo limitations, if you go past +76, I believe +78 is the Max Ammo for NONE item, and +80 is the Max Ammo for M9, and so on in order. You can modify the ammo limitations like this, but there's really no reason to because you can set ammo past the limit anyway.