Crimson Red Posted June 10, 2012 Share Posted June 10, 2012 (edited) Uh, stayed up too late and thought too hard and this is what I came up with: essentially, nothing but some basic observations and ranting, I didn't actually accomplish much unless you want to turn the 60-use vulnerary into a 60-use elixir or pure water or anti-toxin I suppose... yeah, no.... Item Effect Hacking Notes-------------------------- 0x2D0D0 - Pointer to offset for Vulnerary item effect routine. Right after is the elixir pointer. 0x2D18C - the last entry, the 60-use vulnerary. 0x2D190 - ASM routines start here 0x2D1E2 - Vulnerary healing amount byte 0x2D04C - Table start--the pointer to this table is at 2D048. The distance from the starting point of the table to the vulnerary entry is 0x84 bytes, or 0x21 entries. The value in the Nightmare Module under staff/item effect matches that exactly! However, the last entry overall is 0x33, the 60-use vulnerary. This is cool except the table itself has 0x51 entries. That doesn't make sense: are there extra entries here for something that aren't being counted overall? I don't even know... As I thought, copying the entire data from the elixir to the vulnerary did not change the vulnerary's effect. It's hardcoded for item 0x6B to have entry 0x21 as the effect, some other way... Changing the value at 0x2D1E3 from 0x21 (the entry value for the vulnerary) to 0x22 or 0x23 makes the vulnerary act like an elixir. I don't know what this means, though: furthermore this same pointer is shared with the 60-use vulnerary so... idk, idk... 0xB96158 - ??? 0x1250A68 - Heal Staff item data offset 0x12515A8 - 60-use vulnerary item data offset Uh got lazy on taking my random notes so here's some Skype stuff: [9:46:12 PM] ballin1337: failed again... [9:46:17 PM] ballin1337: I think that's my last idea. [9:46:24 PM] ballin1337: I changed the Unlock staff to have the heal effect [9:46:29 PM] ballin1337: but the "staff" option won't activate. [9:46:49 PM] ballin1337: meaning that somewhere else are a bunch of bytes that determine when a staff can activate. [9:47:51 PM] ballin1337: Furthermore... the heal and mend and recover staves all use the same base pointer for their effect. Which doesn't make sense: they all heal different amounts (unless they cap anyway), so they should all have different effect pointers. [9:48:47 PM] ballin1337: In conclusion, there is something else going on here, and until I hack that, I cannot replicate the effect of a staff, or even replicate the effect of the vulnerary. ALL I can do is change the properties of a vulnerary... but aside from uses there is nothing to change, so, I'm screwed. So, I tried making various changes, but none of them were really successful. I can turn the vulnerary into an elixir, but there is little point in that except to maybe make an unbreakable elixir (the only property of items worth editing is in fact their uses). I can't duplicate the vulnerary's or elixir's healing effect and relocate it elsewhere: the game stops, possibly because of branching routines needing the data in a certain location, I don't know. I can't turn the Unlock staff into a healing staff because the requirements for activating the "Staff" option to appear are... simply put, different. Somewhere in the ASM is this, but I don't know where--it's likely close by, but I honestly couldn't tell. I tried turning the vulnerary into a healing staff but encountered the same problem: although I can change the effect, I can't actually make the option to activate that effect appear. It's possible that there's even more data somewhere deciding how much the heal staves heal because if there "effect pointer", as I deemed it, is the same, then there HAS to be something else being involved here. Thus I do not have information to make any significant changes. That is the simple reality of this. Oh well, it was a fun little time, even if I didn't really accomplish anything... *shrug* Edited June 10, 2012 by Strawhat Luffy Quote Link to comment Share on other sites More sharing options...
Klokinator Posted June 10, 2012 Share Posted June 10, 2012 *Reads for a couple minutes* So basically, score 1 for FEXP. Got it. Quote Link to comment Share on other sites More sharing options...
Agro Posted June 10, 2012 Share Posted June 10, 2012 Okay, Klok. Okay. get back to us when FEXP gets a turbo button, then we'll talk Quote Link to comment Share on other sites More sharing options...
Klokinator Posted June 10, 2012 Share Posted June 10, 2012 Silly children, complaining that FEXP is slow when it's as fast as playing FE on a regular cartridge. What?! Only hipsters play on cartridges! Kool kids use roms for everything...! Quote Link to comment Share on other sites More sharing options...
Chocolate Kitty Posted June 10, 2012 Share Posted June 10, 2012 (edited) gba carts don't pause and freeze up when the enemies begin to move :U Edited June 10, 2012 by Kitty of Time Quote Link to comment Share on other sites More sharing options...
Agro Posted June 10, 2012 Share Posted June 10, 2012 Silly children, complaining that FEXP is slow when it's as fast as playing FE on a regular cartridge. What?! Only hipsters play on cartridges! Kool kids use roms for everything...! the keyword is 'turbo' Quote Link to comment Share on other sites More sharing options...
Klokinator Posted June 10, 2012 Share Posted June 10, 2012 To be fair, that's an error of the game creator, not necessarily the engine. As long as you limit the number of events to about 80 or less on a map, it usually never freezes. Generic War had nearly 200, which is why it was so slow woolol. I've learned a lot about its limitations though so MoH should run much smoother than GW. Quote Link to comment Share on other sites More sharing options...
Chocolate Kitty Posted June 10, 2012 Share Posted June 10, 2012 To be fair, that's an error of the game creator, not necessarily the engine. As long as you limit the number of events to about 80 or less on a map, it usually never freezes. Silly children, complaining that FEXP is slow when it's as fast as playing FE on a regular cartridge. does not compute Quote Link to comment Share on other sites More sharing options...
Crimson Red Posted June 10, 2012 Author Share Posted June 10, 2012 (edited) okay, can we not argue about a beta FE game-making engine that Klok likes to suck the dick of, maybe actually either discuss the notes or let this topic get no replies like it should? just requesting this since like, you're cluttering meh topicz and you started it Klokinewb EDIT: typo Edited June 10, 2012 by Strawhat Luffy Quote Link to comment Share on other sites More sharing options...
Klokinator Posted June 10, 2012 Share Posted June 10, 2012 (edited) FEXP actually plays a lot faster when you hold down the "Action" button (Which would be like holding down "A" on a GBA) but there is occasionally a slight pause when the enemies turn grey after moving. This pause is normally unnoticeable, but if you have a lot of events on the map the pause can take about .45th to .75th of a second per unit due to AI having to scroll through more events. However, if you limit events like Yeti did, the pause is unnoticeable. Therefore, with few events, it runs as fast as a regular cartridge game. Edit: My bad Blazer, sorry. Edited June 10, 2012 by Adolf Klokler Quote Link to comment Share on other sites More sharing options...
CT075 Posted June 10, 2012 Share Posted June 10, 2012 a) ha ha fexp b) i'll set a break-on-read into there and disassemble the routines later Quote Link to comment Share on other sites More sharing options...
Crimson Red Posted June 10, 2012 Author Share Posted June 10, 2012 (edited) so after thinking/looking into things a bit more I'm slightly more confident there's another table that determines the activation requirements for the option to use a staff or item (e.g. if it's self-use, if the character is within range, if the HP isn't the max HP, if the unit's condition is poison, etc.). I don't know where it is though and *I* don't think debugging is going to help me here because I already tried deciphering the assembly and lost my patience but if you can try and get somewhere then good for you (no sarcasm, it'd be great). EDIT: The pointer table at 0x2F248 is related... I don't feel like figuring out anymore, so that's all I got. Edited June 10, 2012 by Strawhat Luffy Quote Link to comment Share on other sites More sharing options...
CT075 Posted June 10, 2012 Share Posted June 10, 2012 there's a routine at 0x######## (i can't be fucked to look it up right now) that determines whether an item is usable or not ahve you tried setting a break-on-write (with no$debugger) on the character's hp? Quote Link to comment Share on other sites More sharing options...
Crimson Red Posted June 11, 2012 Author Share Posted June 11, 2012 (edited) no I gave up on this I might make an infinite elixir, a Pure Sword, or a Sealed Sword-esque healing sword just to show-off, though EDIT: the above line is a joke for those of you who take striked lines seriously... oh that makes this line a joke too, except it isn't... ahhh mind games Edited June 11, 2012 by Strawhat Luffy Quote Link to comment Share on other sites More sharing options...
dondon151 Posted June 11, 2012 Share Posted June 11, 2012 actually did anyone ever figure out how to make a weapon heal HP upon use (like the sword of seals) in games post-FE6? Quote Link to comment Share on other sites More sharing options...
Crimson Red Posted June 11, 2012 Author Share Posted June 11, 2012 (edited) yes I did well in theory/with the help of a friend, I haven't actually done it because I'm too lazy/have no reason to/am not into showing random shit that anyone can do Edited June 11, 2012 by Strawhat Luffy Quote Link to comment Share on other sites More sharing options...
Crimson Red Posted December 5, 2012 Author Share Posted December 5, 2012 (edited) At 0x0802742C is a table of 0xD0 length, with pointers that are one word each; that's 0x34 entries, including the entry 0x00 as one, and I know that the last item in the item table is the 60-use Vulnerary, which has "item effect" (the useless byte that seems to do nothing) 0x33. In other words, this matches up. Also, one could (probably) use the 60-use vulnerary item and branch it to go to a copy of the normal vulnerary routine but at a different address and then instead of mov r0, #0xa do something like mov r0, #0x14 and then make it continue using the same routine as the vulnerary, which SHOULD make it heal 0x14 or 20 HP instead of 10. Granted there's only one 60-use vulnerary so eh, once you use it up, you can't really magically make it do something else >< (though you could edit the routine to say, heal 50% of HP, or maybe heal a different amount of HP based on what chapter it is, or maybe heal a mount of HP equal to one's strength or something silly like that... once you branch it out there are like, millions of options). Anyhow, going back to do more research... EDIT: The first entry in this table seems to be related to promotion items (I'm very confident, to say the least). It loads pointers that look like list of classes that can be promoted, and while I don't have my Nightmare Modules on hand, I'm guessing those promotion editors edit the very value at these offsets or something like that (I don't remember exactly but that sounds reasonable). ...Yeah, the routine itself seems to load the character value and compare it to the values at the address until finding a match, and, if it does, return the result as "true" (0x01 seems to be true here) or false (it keeps checking until it finds the byte "0x00", to which it goes to the end and does mov r0, #0x00 to load 0x00 into r0, which it presumably checks) well that's cool in general but not what I'm looking for XP aaaand further diagnosis makes me want to believe that this table in general is bull**** because most of the pointers are shared minus the first few and some other random ones and the ASM they point to fits like, perfectly for the promotion stuff, but not for this, so idk what's going on maybe this is why the staff item effect byte in the module doesn't work, maybe it's only really used for promotion items and is irrelevant for everything else or something... sadly I can't check right now cuz I don't have my NMM's but oh well >< EDIT2: and there are even more bull**** tables before that I don't have time to analyze (and they seem pretty damn useless anyhow) but at 0x026D10 (with, as usual, the pointer to this table being located right before it i.e. at 0x026D0C) there is a table of length 0x144, the same as the other table later on in the ROM (0x51 entries, or 0x50 entries not including entry 0x00--and the other table with entries of 0x34 that might correspond to the item byte seems useless in general so maybe we're better off dealing with these tables of greater lengths). ...... OKAY SCREW LUNCH BREAKTHROUGH IN PROGRESS these bytes almost definitely control whether not the item is usable. corrupting the last pointer (which I know to be the one that affects the 60-use vulnerary) made the game freeze upon hitting the "Item" menu--and I know that whether or not the item is usable or not is actually decided as soon as that menu loads, so that makes sense. Setting the pointer to something different also made the item not usable--YAY! good news! If everything works out smoothly we might be able to expand this and actually make custom items. O_O yup, confirmed. I changed it to the pointer after the Elixir pointer thinking that it would be the Antitoxin and require me to be poisoned for me to use it; and, in fact, that's what happened. I couldn't use the 60-use vulnerary until I memory hacked myself to be poisoned O_O okay sadly I'm out of time to do anything HOWEVER when I can I'm going to expand both tables and make them both use the vulnerary pointers and if they work that's great news and we'll probably be able to make a LOT of custom items (granted with a lot of ASM work but still) and if not then... I got no other leads so I'd prob have to ask someone else to take over >_>' kthxbai! EDIT: Okay I think I figured it out man this was hopeless without any ASM knowledge and this is hella hard too but I think I got this anyhow if I still need help later I'll let you know but until then I'm gonna work on trying to hack items and then eventually make up a system for custom ones :D :D :D Edited December 5, 2012 by Burning Gravity 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.