Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Find Valid Game IDs (digits) script help

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine
View previous topic :: View next topic  
Author Message
ParkourPenguin
I post too much
Reputation: 152

Joined: 06 Jul 2014
Posts: 4706

PostPosted: Wed Jul 29, 2020 10:21 am    Post subject: Reply with quote

The address being passed to readString isn't what you hope it is. I wouldn't suppose itemNum is correct either.
Without more information I can't tell you what the correct address to read is.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
Branimir
Advanced Cheater
Reputation: 0

Joined: 12 May 2015
Posts: 59

PostPosted: Wed Jul 29, 2020 4:12 pm    Post subject: Reply with quote

ParkourPenguin wrote:
The address being passed to readString isn't what you hope it is. I wouldn't suppose itemNum is correct either.
Without more information I can't tell you what the correct address to read is.


I see... Sad

More information? Well... I don't know what else to mention other than:

1) It is for Item Customization slot 1 modding
2) It is for Broly (base form) (Custom 3)
3) The address never changes (no need for a pointer)
4) Every character has their own addresses for the 10 item slots
5) It is for Raging Blast 2 (BLUS 30581)
6) The value type is 4 Byte Big Endian

If you have the game, you can try it for yourself.
Just download the RPCS3 emulator, install the game into it and you're done.
(Keep the disc in the drive, unless you have an ISO. 64-bit OS required.)

I already made a cheat table for this game.
I just need to map those item IDs and I'm done.

...But I don't want to do it by hand all the time. Sad
(Been doing it manually for the past 10 years. I'm sick of it.)
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 152

Joined: 06 Jul 2014
Posts: 4706

PostPosted: Wed Jul 29, 2020 5:53 pm    Post subject: Reply with quote

You can start by listing the addresses stuff is located at.

Open up the structure dissector, put in the base address at the top ( 0x330003D88 ), open whatever nodes are required to show where ItemNum / ItemText are, and post pictures for a couple items.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
Branimir
Advanced Cheater
Reputation: 0

Joined: 12 May 2015
Posts: 59

PostPosted: Wed Jul 29, 2020 6:44 pm    Post subject: Reply with quote

ParkourPenguin wrote:
You can start by listing the addresses stuff is located at.

Open up the structure dissector, put in the base address at the top ( 0x330003D88 ), open whatever nodes are required to show where ItemNum / ItemText are, and post pictures for a couple items.


I just checked. There is no ItemNum, ItemText or TextNum in the dissect window.
(Expanded everything, and did a CTRL+F search. No results.)

Here's a picture: https://i.imgur.com/ThW3MIT.png
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 152

Joined: 06 Jul 2014
Posts: 4706

PostPosted: Wed Jul 29, 2020 6:58 pm    Post subject: Reply with quote

No, I mean like what's written in the script.
Code:
local ItemNum = ReadInteger(StartAddr + (TextNum * 0x38))
local ItemText = ReadString(ReadPointer(StartAddr + (TextNum * 0x38) + 0x10),50,false)
Allegedly, StartAddr contains an array of something, ItemNum is at offset 0 in each element, and a pointer to ItemText is at offset 0x10 in each element. As you can see from the output, something is obviously wrong: either 0x330003D88 isn't the beginning address of the array, or the structure layout of each element is wrong.

You can try making it yourself. Find where the array is, and look at it in the structure dissect window. Try to figure out how big each element in that array is and where ItemNum / ItemText are.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
Branimir
Advanced Cheater
Reputation: 0

Joined: 12 May 2015
Posts: 59

PostPosted: Wed Jul 29, 2020 7:27 pm    Post subject: Reply with quote

ParkourPenguin wrote:
You can try making it yourself. Find where the array is, and look at it in the structure dissect window. Try to figure out how big each element in that array is and where ItemNum / ItemText are.


You're asking a lot from a noob. Still... I'll try. (100% guaranteed to fail though.)
By the way... I managed to track down where I got that script from.

Here's a picture: https://i.imgur.com/TXwfT7x.png

Hope it helps.

PS:
It's 3:25am here and my eyes are on fire.
I'm gonna go sleep now. I'll give this a try later.
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 152

Joined: 06 Jul 2014
Posts: 4706

PostPosted: Wed Jul 29, 2020 8:32 pm    Post subject: Reply with quote

When you come back to this, try scanning for a string. Something like "Could not escape!" might be better (more unique) than "Attack".
For all the results you get (hopefully you can find a string with just one result), scan for the address that string is located at. One of the pointers pointing to that string is probably in the array, and you can look at the memory around there to get an idea of where the array begins, how big each element is, etc. Having basic knowledge of assembly and debugging could help too (try the CE tutorial).

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
Branimir
Advanced Cheater
Reputation: 0

Joined: 12 May 2015
Posts: 59

PostPosted: Thu Jul 30, 2020 6:28 am    Post subject: Reply with quote

ParkourPenguin wrote:
When you come back to this, try scanning for a string. Something like "Could not escape!" might be better (more unique) than "Attack".


Well, I did a scan for a string just now. And I got two results. One of them modifies the name of the item
(Rush Attack Up S, whose digit is 0 since it's the very first item in the list) while the other doesn't.

I then opened the memory viewer at its location, and found something interesting. ITEM_000_US.txt to ITEM_749_US.txt
Here's some pictures: https://imgur.com/a/hrJNFCT Not sure what it is. Just felt like sharing.

ParkourPenguin wrote:
scan for the address that string is located at.


Not sure what you mean by this, exactly.
If you mean "What accesses/writes" then I've already done that.
I got two results, and I put the addresses into the script. I got useless results again.

ParkourPenguin wrote:
One of the pointers pointing to that string is probably in the array, and you can look at the memory around there to get an idea of where the array begins, how big each element is, etc.


Erm... RPCS3 doesn't need pointers, since the addresses do not change.
This is mostly game-dependent however. For example, Dead Space 1, 2, and 3's addresses do change
and you need to make a script for them. (Which is really easy to do. Except for Health, since it is Shared Code.)
I actually have a thread on here about Dead Space's Shared Code.

ParkourPenguin wrote:
Having basic knowledge of assembly and debugging could help too (try the CE tutorial).

I've passed tutorial 1 through 8 by myself. But for Shared Code I needed to Google. (Passed it in the end.)
(Speaking of which, I still don't know how to write my own Shared Code script. Dead Space is laughing at me.)
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 152

Joined: 06 Jul 2014
Posts: 4706

PostPosted: Thu Jul 30, 2020 1:29 pm    Post subject: Reply with quote

That area of memory is just where a bunch of strings are stored. They don't have to have anything to do with each other.

The original script doesn't search for widechar strings ("false" third parameter to readString). Don't tick "unicode" or whatever CE calls it in the main window.

Values, including strings, are stored at an address in memory. In that image, that string is stored at 33086DCA2. Set the value type to 8-byte (because pointers take up 8 bytes in a 64-bit process), make sure the "hex" checkbox is checked, and search for 33086DCA2.
The results that come up are pointers that point to that string. (see readPointer in the original script)

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
Branimir
Advanced Cheater
Reputation: 0

Joined: 12 May 2015
Posts: 59

PostPosted: Thu Jul 30, 2020 1:53 pm    Post subject: Reply with quote

ParkourPenguin wrote:
That area of memory is just where a bunch of strings are stored. They don't have to have anything to do with each other.

The original script doesn't search for widechar strings ("false" third parameter to readString). Don't tick "unicode" or whatever CE calls it in the main window.

Values, including strings, are stored at an address in memory. In that image, that string is stored at 33086DCA2. Set the value type to 8-byte (because pointers take up 8 bytes in a 64-bit process), make sure the "hex" checkbox is checked, and search for 33086DCA2.
The results that come up are pointers that point to that string. (see readPointer in the original script)


If I do not tick/check Unicode (UTF-16) when scanning for Strings, I would get 0 results.

Like I said in my previous post, there are no pointers in RPCS3.
You can only make scripts. I just did what you told me, and got 0 results.

Again - like I said earlier - if you have the game (and a powerful enough machine) you can very easily do this yourself;
Even better than myself, since you obviously know more than I.

However, if you have any more suggestions/ideas, I'm all ears (eyes in this case).
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 152

Joined: 06 Jul 2014
Posts: 4706

PostPosted: Thu Jul 30, 2020 2:19 pm    Post subject: Reply with quote

I'm not going to look at this myself, and it sounds like you're SOL.

Did you scan through all memory? Not just writable, but also non-writable, CoW, and mem_mapped (settings menu).
If the emulator uses JIT compilation, you may need to play around in the game for a bit for the right code to compile. (don't just start it and leave it at the main menu)

When I say "pointer", I don't mean "a pointer path with a static base address", but a pointer. Look at any guide/tutorial for pointers in a lower level language like C or C++; there will be plenty of information.

The easiest thing you can do is to try to contact whoever made the script in the first place. Tell them it doesn't work and ask them if they'd be willing to help you.
If that doesn't pan out, the next easiest thing is to ask someone else to make it for you (try a third party site).

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
Branimir
Advanced Cheater
Reputation: 0

Joined: 12 May 2015
Posts: 59

PostPosted: Thu Jul 30, 2020 2:46 pm    Post subject: Reply with quote

ParkourPenguin wrote:
I'm not going to look at this myself, and it sounds like you're SOL.

Did you scan through all memory? Not just writable, but also non-writable, CoW, and mem_mapped (settings menu).
If the emulator uses JIT compilation, you may need to play around in the game for a bit for the right code to compile. (don't just start it and leave it at the main menu)

When I say "pointer", I don't mean "a pointer path with a static base address", but a pointer. Look at any guide/tutorial for pointers in a lower level language like C or C++; there will be plenty of information.

The easiest thing you can do is to try to contact whoever made the script in the first place. Tell them it doesn't work and ask them if they'd be willing to help you.
If that doesn't pan out, the next easiest thing is to ask someone else to make it for you (try a third party site).


Scanned with Writable, Executable and CopyOnWrite all set to GRAY and with mem_mapped ticked. Still no results.

RPCS3 does in fact use JIT. It is why some addresses only show their proper values when you are at a specific place in the game.

Oh. So that's what you meant. My bad.

I suppose that would be the best course of action. If that fails as well, I'll simply map them by hand. I'm used to it by now.

...Sucks being ignorant doesn't it? Ah well.
In any case, I thank you for your time and effort. It is appreciated. Have a nice day.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites