Jotari Posted August 5, 2018 Share Posted August 5, 2018 I'm playing around with trying to make Idoun and actually challenging boss. It seems that her current stats aren't that bad, the only thing that makes her a chump is weapon effectiveness tripling weapon might (Roy deals single digit damage against her without the weapon effectiveness and over 40 with it). So is there any way to easily changer weapon effectiveness from tripling weapon might to just doubling it? Using FEBuilderGBA by the way. I'm guessing even if I have to jump into Hex or something under the hood, it should be as simple as changing a two to a three. I just don't know where that three is. Quote Link to comment Share on other sites More sharing options...
Tequila Posted August 6, 2018 Share Posted August 6, 2018 Write 00 00 to 248D4. Quote Link to comment Share on other sites More sharing options...
Jotari Posted August 6, 2018 Author Share Posted August 6, 2018 4 hours ago, Tequila said: Write 00 00 to 248D4. I'm not sure what that means. Quote Link to comment Share on other sites More sharing options...
Tequila Posted August 10, 2018 Share Posted August 10, 2018 On 8/6/2018 at 11:46 AM, Jotari said: I'm not sure what that means. Open your rom in a hex editor (like HxD; if you use FEBuilder, I believe that has a built-in hex editor), go to the address 248D4, and write 00 00 there. Quote Link to comment Share on other sites More sharing options...
Jotari Posted August 10, 2018 Author Share Posted August 10, 2018 (edited) 1 hour ago, Tequila said: Open your rom in a hex editor (like HxD; if you use FEBuilder, I believe that has a built-in hex editor), go to the address 248D4, and write 00 00 there. Can you explain what effect that's having or why it should work? Because it doesn't seem to be. Character still deal the same amount of damage with weapon effectiveness (it also allows me to continue playing the game after Roy dies for some reason). EDIT: That Roy surviving is a separate issue that;s probably something to do with Manakete weapons. Changing 248D4 to 00 doesn't seem to have any effect on my game. You say 00 00, should I be changing 248D5 too? Edited August 10, 2018 by Jotari Quote Link to comment Share on other sites More sharing options...
Tequila Posted August 10, 2018 Share Posted August 10, 2018 18 minutes ago, Jotari said: You say 00 00, should I be changing 248D5 too? Short answer: Yes. Explanation: We're editing assembly code here. The first two instructions load the attack into r1, which is a register (think of a register as a container that has a value in it). To multiply by 3, we use lsl (logical shift left, akin to multiplying by powers of 2) to multiply by 2 (2^1, where 1 is the argument on the far right (h stands for hex)) and put that value in r0. Then we add the original value to r0. 2*number + number = 3*number. We could use mul, which is multiplication (and is probably what you were expecting to find), but the compiler preferred to use an lsl/add combination, which is slightly faster. To multiply by 2, we just want to get rid of the "add r0,r0,r1" instruction, which is why I had you write 00 00. That encodes the instruction "lsl r0,r0,#0", or "multiply value in r0 by 2^0 = 1", which means the value stays the same. If you only change the first 00, you'll get the instruction "add r0,r0,r0", which doubles the value (this should mean effective weapons deal 4x damage!). If you want to understand assembly a bit more, give this a read. Quote Link to comment Share on other sites More sharing options...
Jotari Posted August 10, 2018 Author Share Posted August 10, 2018 7 minutes ago, Tequila said: Short answer: Yes. Explanation: We're editing assembly code here. The first two instructions load the attack into r1, which is a register (think of a register as a container that has a value in it). To multiply by 3, we use lsl (logical shift left, akin to multiplying by powers of 2) to multiply by 2 (2^1, where 1 is the argument on the far right (h stands for hex)) and put that value in r0. Then we add the original value to r0. 2*number + number = 3*number. We could use mul, which is multiplication (and is probably what you were expecting to find), but the compiler preferred to use an lsl/add combination, which is slightly faster. To multiply by 2, we just want to get rid of the "add r0,r0,r1" instruction, which is why I had you write 00 00. That encodes the instruction "lsl r0,r0,#0", or "multiply value in r0 by 2^0 = 1", which means the value stays the same. If you only change the first 00, you'll get the instruction "add r0,r0,r0", which doubles the value (this should mean effective weapons deal 4x damage!). If you want to understand assembly a bit more, give this a read. Ah, I see. That does make sense to me (I haven't used it in a few years, but I did study some basic assembly once upon a time). I guess they knew from the very start they wouldn't be altering effective damage, so making it an addition rather than a multiplication was sensible. This will change the game massively, as not only will it make manaketes harder to take out, but it'll also affect the power of Bows on fliers. Hmm. It'll be interesting to see how things play now. Thanks a bunch. Quote Link to comment Share on other sites More sharing options...
Jotari Posted August 10, 2018 Author Share Posted August 10, 2018 Double posting because Serenes is doing that glitch where it won't let you edit posts. Is there any way to see what the assembly is doing from the Hex Editor in FEMakerGBA? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.