@tehaxor69:
Thanks a lot for that. It works fine even for value [18] of health now. I just easily have to expand each table by two bytes for each health I add to the default value. Doing this will fix the color for the general thing, but Burt's hands still look wrong. [...]
Forget about that problem I've posted here, it's solved!
Here is a quick guide on how to increase Burt The Bashful's HP.
1. The first thing you should do is jump to ROM Offset 0x32029 and change the [FF] there to [03].
2. As the second step, think about how many HP do you want him to have. There are 342 bytes of free space at the end of SNES bank $06. That's most of the free space you can use for table relocation. To calculate, how many bytes you need, calculate HP * 10. That's a maximum of 34 HP. If you have determined a good value, calculate what Hex-value to write. Calculate your (HP - 1) * 2. Keep in mind to use the Hexadecimal system (The 34 is 22 in Hex). Now jump to ROM Offset 0x319BB and write the value down there.
3. Now jump to ROM Offset 0x32233. To calculate what to put there, calculate:
8 / (your HP / 6).
Calculate it in Decimal, cut all the numbers behind the comma off, translate the number into Hex and write it down at that Offset. If the number is close to the next upper number you might want to round the value off, so for example 4,8 becomes 5.
4. Copy five strings of data and paste them into your free space. It begins from 0x380AC and ends at 0x381FF. Each of those strings is 12 bytes. Here are their locations: (Don't copy and paste, yet!)
1. 0x31B94 [E0 00 D0 00 C0 00 C0 00 C0 00 C0 00]
2. 0x31BA0 [00 FA 40 FA 80 FA C0 FA 00 FB 40 FB]
3. 0x31BB8 [A6 E7 40 E6 40 E6 40 E6 40 E6 40 E6]
4. 0x31BC4 [DA E7 D8 A5 D8 A5 D8 A5 D8 A5 D8 A5]
5. 0x31BD0 [FA E7 F6 A5 F6 A5 F6 A5 F6 A5 F6 A5]
Sooo... What you are going to do now, first is calculate again. Each of those tables consume an additional amount of ((your HP - 6) * 2) bytes. Take the first table and write it to the beginning of the free space. Then add the string [C0 00] repeatedly, until you have enough bytes (With enough bytes, the value of bytes you've got from ((your HP - 6) * 2) as a result is meant!!). Set the second table after that. Write down [40 FB] repeatedly at the end until you have enough bytes, there, too. To the third table, add [40 E6]-strings, to the fourth, add [D8 A5]-strings and to the fifth, add [F6 A5]-strings. Since you have not taken a higher HP than 34, the free space is fully sufficient to do that.
On another note, keep in mind, where you've placed the beginning of each table. For my sake, make a text file where you write something like:
1. table: 0x......
2. table: 0x......
3. table: 0x......
4. table: 0x......
5. table: 0x......
5. Afterwards, we are going to change some pointers. This requires a little bittle of ASM knowledge. Jump to 0x3205F. There you can see the string [94 99]. That's a pointer. Now, in case you haven't done so already, download
Lunar Address. Now on the left side of Lunar Address give the Offset for Table 1's beginning. You will get the SNES Address now. Forget about the bank and keep the last two bytes in mind. If you've placed the first table from 0x380AC, Lunar Address will give out the following SNES Address $
06:
FEAC
Forget about the $
06, because that is the SNES bank. Since it's a two-byte address pointer, it can't reach another bank. Now you've only got
FEAC left. Swap them, so you get
ACFE. That's the value you use to replace [94 99], so you will write [AC FE].
For the following values always use this method!!
Jump to 0x32020 and replace [A0 99] with the value for your second table.
Jump to both, 0x322C0 and 0x32AD2 and replace both strings [B8 99] with your value for table three.
Jump to 0x322EE and 0x32AEA. Replace the strings [C4 99] with the value for your fourth table.
Jump to 0x3231C and 0x32B02. Then replace both string [D0 99] with your fifth table's value.
6. There you go! In case you've followed the instructions carefully the battle should be completely unbuggy now.
In case you want to lower Burt the Bashful's HP only change the byte of Step 2 to the value you need and then follow Step 3. Steps 1, 4 and 5 are not needed in that case.