Jump to content

Super Mario 64 (TechnoSeven) Android Port (Normal and No Touch Version)


Recommended Posts

Posted

I got the Addresses for Inf Health, Lives, No Hit, Inf Hat Time, and Hat Selection. But when I next run the Game, the Address is different, so will need a Pointer for it. Has anyone looked into this?

Screenshot_20231019-232220.png

Screenshot_20231019-001913.png

Posted

Yes. You must write script that has the pointer that is responsible for pointing to a new memory address in which your health, time...etc is stored. You could do this by using backwards pointer search. In Unity games this goes quite efficient. Then must place the pointer in a while loop so that the moment the memory address changes of your health the script will automatically find the new memory address.

Also if possible provide link to the game. So others can do tests and so that one can be more easily supported.

Posted
On 10/20/2023 at 8:34 AM, Smoker1 said:

I got the Addresses for Inf Health, Lives, No Hit, Inf Hat Time, and Hat Selection. But when I next run the Game, the Address is different, so will need a Pointer for it. Has anyone looked into this?

Screenshot_20231019-232220.png

Screenshot_20231019-001913.png

Hi i think i misunderstood the question. You ment the values change address when you restart the application. You would need to find a static group search.

Posted
6 hours ago, nok1a said:

Hi i think i misunderstood the question. You ment the values change address when you restart the application. You would need to find a static group search.

Yes. I find the Address that works, and everything is good. However, once I run the Game at a later time, the Addresses are slightly different. Will Message you with the Link. Doubt I could Post it here, due to the nature of the Topic, and the 14.65 MB Limit

Posted (edited)
7 hours ago, Smoker1 said:

Yes. I find the Address that works, and everything is good. However, once I run the Game at a later time, the Addresses are slightly different. Will Message you with the Link. Doubt I could Post it here, due to the nature of the Topic, and the 14.65 MB Limit

The nature of topic is fine but i see what you mean. Can you do a offset calculation -0x16B starting from your inf health value. And see if the value at that address is 1 dword. If so add offset of +0x08 and type qword. Check if there is a pointer. If so goto pointer and make sure UTF-8 is enabled. Then see if you see string name "spotvg"?

Screenshot_2023-10-24-05-54-37-458_com.f1player.jpg

Edited by nok1a
Add screenshot
Posted
24 minutes ago, nok1a said:

The nature of topic is fine but i see what you mean. Can you do a offset calculation -0x16B starting from your inf health value. And see if the value at that address is 1 dword. If so add offset of +0x08 and type qword. Check if there is a pointer. If so goto pointer and make sure UTF-8 is enabled. Then see if you see string name "spotvg"?

Screenshot_2023-10-24-05-54-37-458_com.f1player.jpg

Unfortunately, I can do Switch, PSVita Cheats, but GameGuardian is a little too much for me. I was lucky I was able to figure out the 8Bit, 16Bit, and 32Bit definitions. For me, I am a Noob with this. If there was a more Noob-Friendly Tutorial, I could get it eventually. I used it somewhat with my GPD XD for Pinball Arcade, but thankfully, those Addresses were Static. So for creating Pointers, or Scripts, I have no idea. Thank you for looking into it, but I will need some help.

Posted
2 hours ago, Smoker1 said:

Unfortunately, I can do Switch, PSVita Cheats, but GameGuardian is a little too much for me. I was lucky I was able to figure out the 8Bit, 16Bit, and 32Bit definitions. For me, I am a Noob with this. If there was a more Noob-Friendly Tutorial, I could get it eventually. I used it somewhat with my GPD XD for Pinball Arcade, but thankfully, those Addresses were Static. So for creating Pointers, or Scripts, I have no idea. Thank you for looking into it, but I will need some help.

I understand. Please save the code in a lua file and then run the script and provide than a screenshot of the saved list.

gg.setRanges(gg.REGION_C_BSS)
gg.searchNumber(":spotvg", gg.TYPE_BYTE)
local t = gg.getResults(1)
gg.clearResults()
gg.searchNumber(t[1].address -0x8, gg.TYPE_QWORD)
local a = gg.getResults(60)
for i, v in ipairs(a) do
v.address = v.address -0x8
v.flags = gg.TYPE_DWORD
end
gg.addListItems(a)

 

Posted
16 minutes ago, nok1a said:

I understand. Please save the code in a lua file and then run the script and provide than a screenshot of the saved list.

gg.setRanges(gg.REGION_C_BSS)
gg.searchNumber(":spotvg", gg.TYPE_BYTE)
local t = gg.getResults(1)
gg.clearResults()
gg.searchNumber(t[1].address -0x8, gg.TYPE_QWORD)
local a = gg.getResults(60)
for i, v in ipairs(a) do
v.address = v.address -0x8
v.flags = gg.TYPE_DWORD
end
gg.addListItems(a)

 

This is the Result I get. Came up with a Message saying Script Ended.

Screenshot_20231023-234938.png

Posted (edited)

Oke looking good so far. But can you send screenshot of the saved list. It's where you gave the results a name.

On 10/20/2023 at 8:34 AM, Smoker1 said:

IScreenshot_20231019-232220.png

Screenshot_20231019-001913.png

 

Edited by nok1a
Posted

Maby not needed to send screenshot. Can you see if you get your health and life values? 

gg.setRanges(gg.REGION_C_BSS)
gg.searchNumber(":spotvg", gg.TYPE_BYTE)
local t = gg.getResults(1)
gg.clearResults()
gg.searchNumber(t[1].address -0x8, gg.TYPE_QWORD)
local a = gg.getResults(60)
for i, v in ipairs(a) do
v.address = v.address -0x8
v.flags = gg.TYPE_DWORD
end
gg.loadResults(a)
for i = 1, 10 do
gg.searchNumber("1", gg.TYPE_DWORD)
end
local b = gg.getResults(1)
local startAddress = b[1].address

list = {{address = startAddress + 0x169, flags = gg.TYPE_BYTE, name = "inf lives"}, {address = startAddress + 0x16B, flags = gg.TYPE_BYTE, name = "inf health"}}

gg.addListItems(list)

 

Posted (edited)
8 hours ago, nok1a said:

Maby not needed to send screenshot. Can you see if you get your health and life values? 

gg.setRanges(gg.REGION_C_BSS)
gg.searchNumber(":spotvg", gg.TYPE_BYTE)
local t = gg.getResults(1)
gg.clearResults()
gg.searchNumber(t[1].address -0x8, gg.TYPE_QWORD)
local a = gg.getResults(60)
for i, v in ipairs(a) do
v.address = v.address -0x8
v.flags = gg.TYPE_DWORD
end
gg.loadResults(a)
for i = 1, 10 do
gg.searchNumber("1", gg.TYPE_DWORD)
end
local b = gg.getResults(1)
local startAddress = b[1].address

list = {{address = startAddress + 0x169, flags = gg.TYPE_BYTE, name = "inf lives"}, {address = startAddress + 0x16B, flags = gg.TYPE_BYTE, name = "inf health"}}

gg.addListItems(list)

 

OK, now I understand. I just did a Screenshot of what came up. Going to look at what else happens with the Previous Script. With the NEW Script you sent, this is what happens......

I thought I should Edit the Result of the 2 Items, but they did nothing. But they showed the Negative Values first.

 

Screenshot_20231024-104620.png

Screenshot_20231024-104840.png

Screenshot_20231024-104849.png

 

Even the old Script, the 5 Results shown has Negative Values for 4 of them, and the 5th one is 0, but changes to 1 at times.

Edited by Smoker1
Posted

One thing that I am curious about: 

Looks very Complicated. Is there a way to do a Memory Dump for 1 Search, then when I search again, do another Memory Dump so a Pointer Scan can be done?

Posted (edited)
2 hours ago, Smoker1 said:

One thing that I am curious about: 

Looks very Complicated. Is there a way to do a Memory Dump for 1 Search, then when I search again, do another Memory Dump so a Pointer Scan can be done?

the no touch version doesn't work for me.
You can do a few dumps and see if you find a static value that has a fixed distance from your desired values but you can't search for a pointer scan by using dumps because as you said, after restart the value is on a different memory location. Unless you find a value and you already know the address at that value is a pointer.

 

2 hours ago, Smoker1 said:

Even the old Script, the 5 Results shown has Negative Values for 4 of them, and the 5th one is 0, but changes to 1 at times.

Oke can you use the old script, then go to the saved list and select all values and do offset +0x169 and type byte.

Screenshot_2023-10-24-22-43-55-843_com.f1player.thumb.jpg.11a55e0f3a16f6f9807f4ef8a82076c1.jpg

Screenshot_2023-10-24-22-44-29-460_com.f1player.thumb.jpg.8392d0acb685049a953d35d6c306cf0e.jpg

which values you get?

Edited by nok1a
added info
Posted
8 hours ago, nok1a said:

the no touch version doesn't work for me.
You can do a few dumps and see if you find a static value that has a fixed distance from your desired values but you can't search for a pointer scan by using dumps because as you said, after restart the value is on a different memory location. Unless you find a value and you already know the address at that value is a pointer.

 

Oke can you use the old script, then go to the saved list and select all values and do offset +0x169 and type byte.

Screenshot_2023-10-24-22-43-55-843_com.f1player.thumb.jpg.11a55e0f3a16f6f9807f4ef8a82076c1.jpg

Screenshot_2023-10-24-22-44-29-460_com.f1player.thumb.jpg.8392d0acb685049a953d35d6c306cf0e.jpg

which values you get?

OK, I think I did what you said, and Checked the Boxes you had Checked, and I got the following......

Last 2 Changes Values

 

Screenshot_20231024-221800.png

Screenshot_20231024-221832.png

Posted (edited)

Yeah it's different for you. Not sure if it's because your having the no touch apk or something else. But if value changes address each time you have to use offsets. So you can search for values that don't change and restart the game a few times to see if the distance from the non changable value and the health value remains same. Will take a few tries.

It's not practical for me to guess to much what values are static so a screen share or somesort is most suitable by my opinion. Perhaps on discord or something.

Edited by nok1a

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.