US: Mario Kart Wii, Mario Kart Galaxy, Super Paper Mario

Started by Zetta_X, April 13, 2009, 05:31:57 AM

Previous topic - Next topic

Zetta_X

I have a few questions regarding these Mario Games:

1)Mario Kart Wii

How would you find the address that modifies the speed value of a Kart. I am guessing, straight off of pure observation that I am going to have to continually change karts with different speed values to have different comparisons to narrow into a few resultant addresses. However, I am not so familiar into OOP and I think that may cause a problem, will I have to load up the same level assuming the same speed address will be continually used every time the level is loaded up?


2)Mario Galaxy

I want to create a code involving the invincible timer after getting hit. First I got hit and paused the values of the game and loaded up all the addresses for search comparisons. As I hit next frame I kept searching for a lower value. Half way through the timer I eliminated everything equaling to zero assuming the invincible timer still has values to it. When the timer finally ran out, I narrowed it down to one address.

Here is the problem, when I poke this address and set its value to 000000FF and Mario becomes invincible and flashes. Sounds perfect to me, so I was getting ready create the actual coding for the Gecko to use. I believe I wanted to write it to a one byte value so the prefix of the code was 00 followed by the actual address I found (I don't remember the exact address now). However, when I wrote the one line code and enabled it, nothing happened. So I read through some documents and tried some tricks and ended up freezing the game and didn't save my search results.

My question is why wasn't the code working when I wanted to freeze the value and stay invincible? I was pretty sure I had everything set up right and by poking the address I am sure that the address I found was still active into RAM. I may re-try this one since I am just a little more educated how OOP programming works.

3) Super Paper Mario

I wanted to create a code to jump unlimited times. In the older games like Super Mario, Megaman, and other similar games I can create a code to jump unlimited times by assuming there is an address that has the value 1 when I can jump and 0 when I cannot jump. Similar to boolean variables...

However, when I was on the ground I searched for 1, when I was in the air I searched for 0, and repeated until I got 0 results. Is there a better way to approach this?




THANKS in advance,

â,,¦Å½


Almas

For the first one:

You'll probably find that different carts have slightly different positions/structures in memory because of the way they are set up. I'm not too knowledgeable about Mario Kart, but you might try activating items that increase your speed or similar (like a "boost" item that temporarily changes it). It might not work, but it's what I would do. A more complex solution would be to find the value in memory that stores a cart's current speed, and then write an ASM code which makes it so the game reads a value larger than it.

The first method, I believe, has already been done by someone else I think (I hear stories about people increasing their speed online and it's bad or something), so unless you're doing it for educational purposes there's not much need.

For Mario Galaxy:

It may be that the invincibility timer is linked to a pointer, and during your testing of the code you travelled into another zone. This would cause the RAM write to be done to a different location, which could cause a crash. I'd recommend viewing it in the Memory Viewer, travelling between zones, making sure it's the right thing.

No idea on the third one. I mean... One solution would be finding where it allows/disallows it in the game and then replacing a command with a nop. But you'd have to find the assembly code that controls when you jump.

Zetta_X

Ahh sounds good!

Most of my experience with this kind of stuff has been with the classic systems and the DS with a trainer.


Thanks =)

Aesteval

Super Paper Mario and Jump related codes:

The only sort of code like that that I've created was in Valkyrie Profile on Playstation (and the code was buggy.)  It's not a boolean variable search of in air vs. on the ground...it's an unknown variable (or series of variables) that change between areas that you can normally jump and areas in which you can "multi jump" that you're searching for.  To illustrate:

The normal state of the game with jumping would be any random stage that you can jump normally and that's it.

The multijump state would be in an area where you can "swim" or perform an otherwise pseudo multijump.

A multijump is essentially swimming in the air by enabling the "swim" variable while not in the water.  The best way to find this sort of variable is within a stage that you can jump in and out of water (to quickly compare unknown values by toggling the swim feature and search for "same as" and "different from" variables.)  It takes quite a bit of time to narrow down the search due to the unknown nature of the variable.  It could be boolean, but it doesn't have to be.

Of course it also does not need to be swimming itself.  It could also be a flying stage or something similar.