shadowofchaos Posted May 3, 2015 Share Posted May 3, 2015 Can anyone take a look at the team pointers and see if you can figure it out? I'm trying to add another Morgan without replacing anyone. Quote Link to comment Share on other sites More sharing options...
VincentASM Posted May 3, 2015 Author Share Posted May 3, 2015 Hmm, that feels like a roundabout solution though. Is there a particular reason you want to do it that way? What I would do is just replace a Logbook character. Get rid of the Logbook pointer, then fix the parent pointer and hair colour manually. Quote Link to comment Share on other sites More sharing options...
shadowofchaos Posted May 3, 2015 Share Posted May 3, 2015 Hmm, that feels like a roundabout solution though. Is there a particular reason you want to do it that way? What I would do is just replace a Logbook character. Get rid of the Logbook pointer, then fix the parent pointer and hair colour manually. I want sibling Morgans in their recruitment chapter. I'm obsessive like that. Quote Link to comment Share on other sites More sharing options...
shadowofchaos Posted May 3, 2015 Share Posted May 3, 2015 I mean I knew you suggested that via PM, Vincent... but I didn't MEAN to do it. https://www.youtube.com/watch?v=0DlveMN19vU ...frick. Quote Link to comment Share on other sites More sharing options...
VincentASM Posted May 3, 2015 Author Share Posted May 3, 2015 (edited) I want sibling Morgans in their recruitment chapter. I'm obsessive like that. I think I understand. Sadly, I can't really test for ya, since I don't have a save with that chapter available. (I do have digital backups, but they're on the 3DS with the latest firmware, so no RAM hacking.) Have you tried changing an enemy in that chapter to the other Morgan? TBH, I have a bad feeling the conversations won't work properly, as in you won't be able to recruit both XD EDIT: I see you done it already or something similar. Edited May 3, 2015 by VincentASM Quote Link to comment Share on other sites More sharing options...
shadowofchaos Posted May 3, 2015 Share Posted May 3, 2015 (edited) Here's the question... Is there some way to figure out the "Teams"? Because I know while there are two "red" groups in that chapter... their team pointers seem to be the same. Yet there must be something differentiating them. That might be the key to the pointers I'm screwing up for adding units. Maybe I'm just fated to have to recruit the daughter separately. TBH, I have a bad feeling the conversations won't work properly, as in you won't be able to recruit both XD I'm guessing they have the same Event ID. ... frick I'm going to have to RAM hack that too. Edited May 3, 2015 by shadowofchaos Quote Link to comment Share on other sites More sharing options...
Rilne Posted May 3, 2015 Share Posted May 3, 2015 Had a really strange time getting the parent pointer on my generated Morgan♀ working. For whatever reason, I can't get the FCRAM dumper working again. (if there's another good online one, I would appreciate the link. Was using the one at dukesrg.no-ip.org) So I'm dealing with pointers by loading a known one from another character, +/- the pointer the correct distance to reach what I need it to be, then write to my target. Kept trying to set her pointer to Nowi, it wouldn't take. Finally decided to sanity check and just copied the parent pointer off Nah...and it worked. So yah. Quote Link to comment Share on other sites More sharing options...
VincentASM Posted May 3, 2015 Author Share Posted May 3, 2015 (edited) I don't really know much about teams, but I'm pretty sure there's some affiliation data saved somewhere. Maybe in GameData.bin. I think that file is probably saved in the RAM too. Speaking of events, I think I know how to read them kinda. They look kinda like the ones in FE9-12. Luckily for you, I think I see the event files in the RAM. So theoretically you could hack it. Maybe the easiest way is to somehow get the game to ignore the flag check. Like how you can automatically get the sidequests in FE11 just by zeroing out checks. Had a really strange time getting the parent pointer on my generated Morgan♀ working.For whatever reason, I can't get the FCRAM dumper working again. (if there's another good online one, I would appreciate the link. Was using the one at dukesrg.no-ip.org) So I'm dealing with pointers by loading a known one from another character, +/- the pointer the correct distance to reach what I need it to be, then write to my target. Kept trying to set her pointer to Nowi, it wouldn't take. Finally decided to sanity check and just copied the parent pointer off Nah...and it worked. So yah. Not sure how much you know about parent pointers, but there are two things to note. 1. Their order and thus position changes depending on the data stored. I think Jacien noticed this. 2. The parent pointer is more than just one character ID. It's one character ID, followed by some data and then the second character ID (and presumably more data). So you can't just point to Nowi and be done with it; you need to point to the space reserved for parent data. Edited May 3, 2015 by VincentASM Quote Link to comment Share on other sites More sharing options...
VincentASM Posted May 3, 2015 Author Share Posted May 3, 2015 (edited) Cool, the event files aren't too hard to read. I think I found the bit you're looking for too... 3D2 -> D4C ev::bgmvolume 221 -> B9B [not pointer] 256 -> BD0 PID_[Morgan M] 1FD -> B77 ev::getbypid 3C7 -> D41 PID_[Chrom] 3E0 -> D5A ev::unitisfatherpid 3F4 -> D6E MID_X012_TK1_Male_02 2A0 -> C1A ev::Talk 409 -> D83 MID_X012_TK1_Male 2A0 -> C1A ev::Talk 3E8 -> D62 [Not pointer] 13D -> AB7 ev::BGMStop 256 -> BD0 PID_[Morgan M] 1FD -> B77 ev::unitgetbypid 273 -> BED ev::UnitTransferByIndex 15B -> AD5 [Morgan M ally flag] <------------------------------ 41B -> D95 ev::flagset Let me know if you find "X012.cmb" in the RAM. If you can, send me a dump that's 2,060 bytes in size from the "cmb" string a few bytes before "X012.cmb". Edited May 3, 2015 by VincentASM Quote Link to comment Share on other sites More sharing options...
shadowofchaos Posted May 3, 2015 Share Posted May 3, 2015 (edited) Cool, the event files aren't too hard to read. I think I found the bit you're looking for too... 3D2 -> D4C ev::bgmvolume 221 -> B9B [not pointer] 256 -> BD0 PID_[Morgan M] 1FD -> B77 ev::getbypid 3C7 -> D41 PID_[Chrom] 3E0 -> D5A ev::unitisfatherpid 3F4 -> D6E MID_X012_TK1_Male_02 2A0 -> C1A ev::Talk 409 -> D83 MID_X012_TK1_Male 2A0 -> C1A ev::Talk 3E8 -> D62 [Not pointer] 13D -> AB7 ev::BGMStop 256 -> BD0 PID_[Morgan M] 1FD -> B77 ev::unitgetbypid 273 -> BED ev::UnitTransferByIndex 15B -> AD5 [Morgan M ally flag] <------------------------------ 41B -> D95 ev::flagset Let me know if you find "X012.cmb" in the RAM. If you can, send me a dump that's 2,060 bytes in size from the "cmb" string a few bytes before "X012.cmb". Yeah, I found it. 0x80C bytes, right? https://dl.dropboxusercontent.com/u/5490460/FE13%20Related/RAM%20Hacking/RAM%20X012.cmb%20dump.bin Edited May 3, 2015 by shadowofchaos Quote Link to comment Share on other sites More sharing options...
shadowofchaos Posted May 3, 2015 Share Posted May 3, 2015 https://www.youtube.com/watch?v=Gioh03UEnNw Frick, I screwed up again. Quote Link to comment Share on other sites More sharing options...
Missing Number Posted May 3, 2015 Share Posted May 3, 2015 still on parentage eh? on that topic, what would happen were chrom to be a taguel and olivia to be manakete before i catch lucinamon? anything? Quote Link to comment Share on other sites More sharing options...
Rilne Posted May 3, 2015 Share Posted May 3, 2015 Nothing. Lucina will always come as Lord. Now, Morgan can vary a bit based on parents, though not parents class. Case in point: vanilla game with MU♂⨯Nowi pairing, Morgan♀ will start as manakete. Quote Link to comment Share on other sites More sharing options...
Missing Number Posted May 3, 2015 Share Posted May 3, 2015 hmmmm making a non-dancer a dancer didnt give me the dance option.... why is that? Quote Link to comment Share on other sites More sharing options...
shadowofchaos Posted May 4, 2015 Share Posted May 4, 2015 (edited) Find the "ev::flagset" string. It should be after all of this: ev::BGMVolume.ev::UnitIsFatherPID.MID_X012_TK1_Male_02.MID_X012_TK1_MaleThen create a code to zero out the string. Not sure what effect it will have, so get ready for a crash, etc. If that doesn't work, I'm sure there are other ways to alter the event. Just gotta be careful not to make the game complain... https://www.youtube.com/watch?v=AXMW_s3T_PU It worked. Haha. IT WORKED. hmmmm making a non-dancer a dancer didnt give me the dance option.... why is that? Funny, it should work: Did you suspend into a battle save or bookmark and reload it? Edited May 4, 2015 by shadowofchaos Quote Link to comment Share on other sites More sharing options...
Jacien Posted May 4, 2015 Share Posted May 4, 2015 (edited) For whatever reason, I can't get the FCRAM dumper working again. Same, this is odd. I guess it's the site acting up. EDIT: It works for me now, used this https://chart.googleapis.com/chart?cht=qr&chs=220x220&chl=http://dukesrg.no-ip.org/3ds/rop?memdump.dat%26 Which is basically the usual site with no filename chosen. The way it dumps is changed, it doesn't just flicker, it shows the progress of the dump now. http://dukesrg.no-ip.org/3ds/rop.html So now I realized that the Logbook Pointer points to the Logbook data for an avatar (you don't say), which basically leads you to the hair color, which I did a previously convoluted way to find it. Now I figured out how to quickly change hair color totally in both spots for an Avatar. So I started with the Roster slot and find the avatar. I see Logbook pointer right below the Character pointer. For me it's E0 BE 8E 15. Flip it and minus 14 00 00 00, and I get 01 8E BE E0, which is the offset. Then when I do Go To, it leads me to where the saved info is for the Logbook. Two lines below that destination is the hair color. Easy. Like I mentioned before, the hair color in roster data affects everything ingame, and the Logbook data is for streetpass, logbook, and viewing Supports from the main menu. Edited May 4, 2015 by Jacien Quote Link to comment Share on other sites More sharing options...
Missing Number Posted May 4, 2015 Share Posted May 4, 2015 (edited) which part of the logbook data affects stat bonuses? can we breach the cap this way? (hopeful as always lol) i really wish i could figure out parent data.... as of last night, everyone is Chrom & Olivia's child for teh lulz Edit: Correction everyone is now Yarne + Anna's kid ^ ~ ^ Edited May 4, 2015 by Missing Number Quote Link to comment Share on other sites More sharing options...
Jaxelh Posted May 4, 2015 Share Posted May 4, 2015 (edited) This may be a stupid question, but does the "x" in "0x134DE9C" stand for? (I'm new to hacking) Edited May 4, 2015 by VincentASM Saving space Quote Link to comment Share on other sites More sharing options...
Rilne Posted May 4, 2015 Share Posted May 4, 2015 Please don't quote the entire opening post when asking a small question. '0x' at the start of a number is the standard notation for saying the number is in hexadecimal, ie. base 16. The actual number in this case would be 134DE9C, which is obviously in hex, but something like 0x1245008 is ambiguous without the 0x at the front. Quote Link to comment Share on other sites More sharing options...
Missing Number Posted May 4, 2015 Share Posted May 4, 2015 so i paired Chrom x Olivia, and popped out Lucina..... gave me a pointer and such.... later i caught her brother Inigo and to my surprise, the game made him his own..... Lucina's 009B46B0 Inigo's 0224BC88 and aside from the papa n mama matching, not much else does what other data do these parent codes give us? Quote Link to comment Share on other sites More sharing options...
Rilne Posted May 4, 2015 Share Posted May 4, 2015 Remember, for every child, one parent doesn't need to be stored since it's always the same. For most of them it's the mother, so only the father is stored. For Lucina and Morgan♀, the father is known, so it stores the mother. So here, Lucina has a parent pointer to Olivia, and Inigo has one for Chrom. As for what the data means, pointers just list another section in memory. In this case, it's likely listing a spot in the static character data. To find the offset it's pointing to so you can go look at it in your dump, flip it from little-endian (the byte order in the dump) to big-endian (ie. human order). Then add 0x14000000 (because FCRAM dump starts at 0x14000000, so offsets in the dump are off by that much). That said, what you've listed don't make much sense. Even assuming those are already in big-endian, that'd be addresses of 0x149B46B0 and 0x1624BC88, which are much too far apart. Are you sure you're pulling from the right spot? For reference (since I'm getting tired of the screenshot offset lists): [spoiler=roster block offsets] 0x00::0x16 (17 bytes) unknown 0x17::0x23 (15 bytes) learned skills 0x5C (4 bytes) character 0x60 (4 bytes) class 0x64 (4 bytes) team 0x6C (4 bytes) logbook 0x70 (4 bytes) parent 0x74 (4 bytes) enemy portrait? 0x78 (4 bytes) unknown 0x7C::0x83 (8 bytes) stats 0x84 (1 byte) roster position 0x85 (1 byte) level 0x86 (1 byte) xp 0x87 (1 byte) hp 0x88::0x97 (12 bytes) unknown 0x98::0xAB (20 bytes) inventory 0xAC::0xB5 (10 bytes) equipped skills 0xB6::0xBB (6 bytes) weapon ranks 0xBC::0xFB (64 bytes) support levels 0xFC hair color 0x100::0x10F (16 bytes) unknown These are offsets from the start of each roster block. So, parent pointer should be the 4 bytes at 0x70. Quote Link to comment Share on other sites More sharing options...
VincentASM Posted May 4, 2015 Author Share Posted May 4, 2015 (edited) Hmm, I'm pretty sure parent data has both parents. Just above, somebody had all of their children be the parent of Yarne and Anna. Likewise, I had Inigo's parents set to Gregor and Panne, even though his mother is always Olivia. I also followed a parent pointer for Morgan with Avatar and Olivia as their parents and saw pointers for Avatar and Olivia around that area. EDIT: As for what's in the parent data... maybe sibling data? Extra support data? I have no idea to be honest XD Edited May 4, 2015 by VincentASM Quote Link to comment Share on other sites More sharing options...
shadowofchaos Posted May 4, 2015 Share Posted May 4, 2015 (edited) 0x88::0x97 (12 bytes) unknownYoooo is no one paying attention to the crap I post? This is Jacien's image, edited. Found the X and Y coordinate. I don't know what the one after that is though. Maybe it's destination coordinate while you're commanding them? *Testing* I wonder where the internal levels are kept. Found the X and Y coordinates.Also for reference, I'm doubting the start of each character for the roster. Each team pointer is referencing 12 bytes before where all of us are assuming the character starts. Team pointer would be pointing to 0x13D0220 on Jacien's image there. Jacien, do you still have that dump? I'm willing to bet the Team pointer there at 0x1283754 (Team pointer 54 37 28 15 for Slot 1) is pointing to 0x13D0220 (20 02 3D 15). Edited May 4, 2015 by shadowofchaos Quote Link to comment Share on other sites More sharing options...
Rilne Posted May 4, 2015 Share Posted May 4, 2015 (edited) Hmm, I'm pretty sure parent data has both parents. Just above, somebody had all of their children be the parent of Yarne and Anna. Likewise, I had Inigo's parents set to Gregor and Panne, even though his mother is always Olivia. I also followed a parent pointer for Morgan with Avatar and Olivia as their parents and saw pointers for Avatar and Olivia around that area. EDIT: As for what's in the parent data... maybe sibling data? Extra support data? I have no idea to be honest XD Hmm. So parent pointer leads to a patch table with both parents? Interesting, would explain some of the issue I had with getting extra Morgan pointing to the right set. I'll have to take a look at that later. Yoooo is no one paying attention to the crap I post? Found the X and Y coordinates. Also for reference, I'm doubting the start of each character for the roster. Each team pointer is referencing 12 bytes after where all of us are assuming the character starts. Team pointer would be pointing to 0x13D0220 on Jacien's image there. Ach, sorry. Lotta interleaving replies in here. [spoiler=current roster offset list] 0x00::0x16 (17 bytes) unknown 0x17::0x23 (15 bytes) learned skills 0x5C (4 bytes) character 0x60 (4 bytes) class 0x64 (4 bytes) team 0x6C (4 bytes) logbook 0x70 (4 bytes) parent 0x74 (4 bytes) enemy portrait? 0x78 (4 bytes) unknown 0x7C::0x83 (8 bytes) stats 0x84 (1 byte) roster position 0x85 (1 byte) level 0x86 (1 byte) xp 0x87 (1 byte) hp 0x88 (2 bytes) map position 0x8A (2 bytes) unknown 0x8C::0x97 (8 bytes) unknown 0x98::0xAB (20 bytes) inventory 0xAC::0xB5 (10 bytes) equipped skills 0xB6::0xBB (6 bytes) weapon ranks 0xBC::0xFB (64 bytes) support levels 0xFC hair color 0x100::0x10F (16 bytes) unknown As for the alignment...hmm. If we knew some more of the leading/trailing data, we could narrow it down. For the locations we do know, so long as we start from the table header these offsets + 0x110 for each block will work fine, even if our offsets are...offset. from the true structure. Edited May 4, 2015 by Rilne Quote Link to comment Share on other sites More sharing options...
shadowofchaos Posted May 4, 2015 Share Posted May 4, 2015 Also, typo. 12 bytes before, not after. 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.