How to Use Float Values

Hacking with floating points is relatively simple, and I have used this method of hacking myself to make some pretty cool codes such as rapid blood drip, step higher, bullet damage mod, and more. This method of hacking was also used by others to make codes such as the gravity mod, speed mod, and jump mod. In case you cant tell, it's an excellent way of making \"mods\". This is because a float value holds an easily changed decimal value which could possibly represent something important. Just think about it, some of the best codes that have been made were made by changing a simple float value.

Choosing a Label

The first step to this technique is choosing a label. Just scroll through the labels until you find anything at all that looks promising and go to that address. Look under your label for an \"ld ra\" command. This is commonly the command used for the end of a function. You will be searching the lines of code from the first address in your label to the \"ld ra\" at the end of it.

Recognizing a float value

So now you know where you will be looking. Good. But now you need to know how you could possibly locate a float value in this mess of adresses and values. Luckily, you will only be looking for one type of command. From my experience, float values are quite often held in \"lui\" commands and look something like this:

0029df60 3c034040 lui v1, $4040 (__40400000)

or this:

0032ec00 3c024160 lui v0, $4160 (__41600000)

Now let's take a closer look at one of those lines:

0029df60 3c034040 lui v1, $4040 (__40400000)

(__40400000) - 8 digit float value (last 4 digits should always be 0's)
$4040 - 4 digit float value (will always be the first 4 digits of the 8 digit float value)

Converting, Editing, and Converting again

Now you need to find out if your float value even represents a reasonable decimal number (i.e. 3, 100, -5, etc) or not (i.e. 4.865956892). Do this by typing in the 8 digit float value into the float-to-decimal converter. If your float value does not convert to a promising looking decimal value you should just forget about that line and find a new lui. But if it does convert to a reasonable number then you may be on to something. Whatever number it is, try making it something much higher or making it a negative number (ex. if it is 5, you might try making it 500 or -1). I recommend trying a negative value first just to see if it affects anything. Convert whatever decimal value you want to test back to float. You will get a new 8 digit float value. And since the 4 digit float value is always the first 4 digits of the 8 digit float value, you also have your new 4 digit float value (ex if your new 8 digit float value is BF800000 your new 4 digit float value will be BF80). Now you just need to replace your old 4 digit float value with your new one. After doing that, you are ready to test your new code. If your first test doesn't yield any results, try changing the float value once again to something completely different and then test it again.