Tables Posted October 18, 2014 Share Posted October 18, 2014 So recently I learned that FE8 has a mode coefficient in it's EXP formula from the Prologue until Chapter 8, which is something I'd like to disable. The fact it disappears after chapter 8 gives me some hope this could be done without ASM or other complex stuff, or even that someone might have already done it, by somehow tricking the game into disabling it because it thinks it's later in the game, but I can't work out a way of doing it in Nightmare of events. Any suggestions? Quote Link to comment Share on other sites More sharing options...
Vennobennu Posted October 18, 2014 Share Posted October 18, 2014 (edited) At 0x2C474, you'll see 01 28 0D D0. Change that to 00 00 00 00. When I was looking for the section of code that dealt with the mode coefficient, I did so by locating the section of code that read the enemy's relative class power. From the calculation page for Sacred Stones, we know that the enemy's class power and the mode coefficient only come into play if the enemy is defeated. So, using the no$gba debugger, I went into the Prologue chapter and set a break on read on the Fighter's class power in the ROM and attacked one of those Fighters with Seth. The debugger broke (ie paused emulation) on 0x23CA0, part of a subroutine that calculates the enemy's effective level for experience game. From there, I was able to look forwards and backwards within the routine to find a section of code that checks your mode byte. If your mode byte was equal to 1 - which corresponds to the section of game before the route split - the game would use an alternate routine that cut your calculated level in half for the purposes of experience gain. By zeroing out this check at 0x2C474, the game will always use the normal routine. Of course, if you know that the game checks your mode byte and you know where the mode byte is in memory (0x0202BD0B by the way) you could just search directly for that byte being read during combat. I didn't know this at the time, so I used a more indirect method. Edited October 21, 2014 by Vennobennu Quote Link to comment Share on other sites More sharing options...
Tables Posted October 18, 2014 Author Share Posted October 18, 2014 At 0x2C474, you'll see 01 28 0D D0. Change that to 00 00 00 00. You are the pure, liquid awesome that flows through this forum. Works like a treat. Incidentally, what would be the sensible way of editing specific hex addresses? I did it by writing a nightmare module, which is probably a dumb way (especially as that's something I've never done before, fortunately it only took about 5 minutes because the format of an nmm looked obvious once I opened it in nightmare) but it was the simplest thing I could think of that I knew would work. Quote Link to comment Share on other sites More sharing options...
Aleph Posted October 18, 2014 Share Posted October 18, 2014 Hex editor. I personally use HexEdit 4.0. Quote Link to comment Share on other sites More sharing options...
Tables Posted October 18, 2014 Author Share Posted October 18, 2014 Okay, great. If I need to edit more hex stuff then I'll look into that (what I've been working on is just a difficulty hack, so it probably won't be necessary). Quote Link to comment Share on other sites More sharing options...
Aleph Posted October 19, 2014 Share Posted October 19, 2014 btw in you first post you wrote "mode coefficient in it's EXP formula" you seem like the sort of person who is more attentive than that Quote Link to comment Share on other sites More sharing options...
Tables Posted October 20, 2014 Author Share Posted October 20, 2014 btw in you first post you wrote "mode coefficient in it's EXP formula" you seem like the sort of person who is more attentive than that Normally I'm fairly on the ball with them, but for some reason getting its and it's right still catches me out. Well, more that I always end up using it's. I feel like "its" should have an apostrophe in it, though, since it's referring to something (the it) in the possessive, which normally takes an apostrophe. Ah well. Quote Link to comment Share on other sites More sharing options...
Aleph Posted October 20, 2014 Share Posted October 20, 2014 I bet if you put in a bit of effort you could figure out how to use a debugger and find things like the mode coefficient yourself. I've seen people with less wisdom and conviction accomplish more. There are times when even I ask questions I could answer on my own because it's just plain faster (and may take someone else less effort if it's something they're already working on), but most of the time it's more convenient to be learn how to do things yourself and then do them. English bugs the crap out of me too, but if it's between consistency and making sense I'll choose the former (I do make exceptions though...like if I am "quoting something". Notice how I put the quotation closing punctuation before the sentence ending punctuation since the sentence came first - I'm trying to have my cake and eat it too). At least with "it's" it's still a contraction, so it still makes sense to use an apostrophe. After that I'm just like "okay if it's not it's it's the other one" Quote Link to comment Share on other sites More sharing options...
Tables Posted October 21, 2014 Author Share Posted October 21, 2014 I've got a bit of programming knowledge and talent, so yeah, I likely could figure out a lot of things if I really wanted. The question is time and fun, but perhaps in the future I'll have a look into it. But thanks for the advice. Quote Link to comment Share on other sites More sharing options...
Aleph Posted October 21, 2014 Share Posted October 21, 2014 incidentally Venno could probably edit a small walkthrough of the steps he did into his post for future reference which would aid anyone curious about learning to use a debugger Quote Link to comment Share on other sites More sharing options...
Vennobennu Posted October 21, 2014 Share Posted October 21, 2014 Hm, good idea Quote Link to comment Share on other sites More sharing options...
Aleph Posted October 21, 2014 Share Posted October 21, 2014 At 0x2C474, you'll see 01 28 0D D0. Change that to 00 00 00 00. From the calculation page for Sacred Stones, we know that the enemy's class power and the mode coefficient only come into play if the enemy is defeated. When I was looking for the section of code that dealt with the mode coefficient, I did so by locating the section of code that read the enemy's relative class power.: So, using the no$gba debugger, I went into the Prologue chapter and set a break on read on the Fighter's class power in the ROM (this can be located by using the information in the nightmare module (.nmm) file to calculate the address of this particular "member" ("class power", as opposed to base strength or base hp etc.) for the particular class (Fighter, in this case) and attacked one of those Fighters with Seth. The debugger broke (ie paused emulation) on execution of the instruction at 0x08023CA0, part of a subroutine that calculates the enemy's effective level for experience game gain. From there, I was able to look forwards and backwards within the routine to find a section of code that checks your mode byte (how was this done? Probably by looking for nearby cmp instructions comparing to obvious values like "0", "1" and "2"?). If your mode byte was equal to 1 - which corresponds to the section of game before the route split - the game would use an alternate routine that cut your calculated level in half for the purposes of experience gain. By zeroing out removing (doesn't matter how, the intent is what is important) this check at 0x0802C474, the game will always use the normal routine. Of course, if you know that the game checks your mode byte and you know where the mode byte is in memory (0x0202BD0B by the way) you could just search directly for that byte being read during combat (by setting a break on reads of that address, as was done for the "class power" of Fighter). I didn't know this at the time, so I used a more indirect method. I adjusted the post a bit to see if I could make it more clear 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.