Crimson Red Posted November 27, 2013 Share Posted November 27, 2013 noob, I could've wrote it in 1/3 the time with 1/3 the code in all seriousness idk how to get this working either and macs are dumb never underestimate ourmy incapability to figure out something on my own Quote Link to comment Share on other sites More sharing options...
Aleph Posted November 27, 2013 Author Share Posted November 27, 2013 (edited) I decided to just leave the .log file available since I'm still picking at the code. I've updated it to properly update support levels for the target unit as well. It seems infeasible to find a more automatic way of clearing the event pointer so that the same event isn't fired over and over (which makes the game unplayable), so I'm about to test the original idea I had of simply making the event wipe the pointer itself. Assuming that works, all that's left is providing a way to display the classic "Support Lv. increased" dialog to have (I think, anyway) the functionality of regular supports retained. Edit: I disassembled the event I was testing with and reassembled it at 0x08D01000 with an "ASMC 0x08D00251" (the location of 133: 08d00250 0 NOTYPE LOCAL DEFAULT ABS ESPC_FUNC_ORIGIN plus 1 (for Thumb mode)) and pointed my test data to that event. It cleared the event pointer appropriately and everything went smoothly. Edited November 27, 2013 by Aleph Quote Link to comment Share on other sites More sharing options...
Aleph Posted November 28, 2013 Author Share Posted November 28, 2013 Guys are you gonna use this thing? I kinda put a lot of work into it and it was your idea so... Quote Link to comment Share on other sites More sharing options...
Agro Posted November 28, 2013 Share Posted November 28, 2013 I've been trying to use it, I'm just too stupid to figure out how to use the assembler. I did what Brendor said and it's still giving me error messages... pulling a pack yak here I hate to ask, but could you provide a step-by-step guide as to how to use it? The assembly patcher is simple enough to use, but I still can't work out how to assemble a new .dmp from the .txt. I realise you're meant to get the Assemble ARM batch file which is what I've done, but I'm still getting error messages like "[file path]\arm-eabi-as is not recognised as an internal or external command". I changed all of them to arm-none-eabi-blah and it gives the same error message. I changed all the file paths to correspond to my own folder and it's still not working, so I'm lost. If someone could provide detailed step-by-step explanation as to what to do, that would be ideal. Quote Link to comment Share on other sites More sharing options...
Aleph Posted November 28, 2013 Author Share Posted November 28, 2013 Well I can assemble the source for you if that's what you need. The .dmp is up to date. If you want me to assemble it with a different allocation address then you have to tell me where it goes. The problem with giving you steps is that you're probably doing the right thing already - it's not working because I have an old version of devkitARM that I've been using for a long time. I don't really know why it won't assemble fot you, but it doesn't need to. I can handle that. The .dmp file is the "end product" so just worry about getting that part to work. If you make an honest effort and things aren't going so well I can make a patch for you, but I'll need a patch of whatever you have so that I can make a patch for your...patch... Quote Link to comment Share on other sites More sharing options...
Agro Posted November 29, 2013 Share Posted November 29, 2013 Just to clarify, if I need to make any more than one entry, do I need to assemble a new .dmp? Or can I just keep adding values and add the 00s at the end to indicate the data has ended? I think I'm still confused as to how this thing works @_@ Quote Link to comment Share on other sites More sharing options...
Aleph Posted November 29, 2013 Author Share Posted November 29, 2013 (edited) It's designed to be easy to use. Yes, you just add values. Assembling the source again is actually slower for adding values than appending them with a hex editor. The entire point of the 0x00 thing is so that you can specify the end of the data yourself so the assembler doesn't have to know. It can't know. Edited November 29, 2013 by Aleph Quote Link to comment Share on other sites More sharing options...
Brendor Posted November 29, 2013 Share Posted November 29, 2013 seems easy enough but one thing's bugging me. at the start of the .dmp file there's a 01 00 D0 08 and then 00 00 D0 08 I know the 00 00 D0 08 is the pointer to the allocated data but is the 01 00 D0 08 relevant to change too or does it get left alone? Quote Link to comment Share on other sites More sharing options...
CT075 Posted November 29, 2013 Share Posted November 29, 2013 that's the bx call, change that too Quote Link to comment Share on other sites More sharing options...
Brendor Posted November 29, 2013 Share Posted November 29, 2013 so just +1 to the allocated data? eg: 01 00 20 09 00 00 20 09 if the allocated data is at 0x1200000 Quote Link to comment Share on other sites More sharing options...
CT075 Posted November 29, 2013 Share Posted November 29, 2013 yes Quote Link to comment Share on other sites More sharing options...
Brendor Posted November 29, 2013 Share Posted November 29, 2013 Awesome! Now this makes perfect sense. Thanks Hextator/Xeld/Obviam/Insidious Silence/Solais/Aleph Quote Link to comment Share on other sites More sharing options...
Vennobennu Posted November 29, 2013 Share Posted November 29, 2013 So I've tried this out. I gave Rebecca and Lowen an extremely simple event that just gives an Armads to Rebecca. The actual support event and support level raising works fine, but: -On the turn that the support is first activated, I can't access the field menu (Suspend/Guide/End/etc), and no units can take any actions; their turns instead end with activating the support event again. Those units with Canto will activate it twice. -The first enemy to attack on the following enemy phase performs an amazing six-hit combo, including a poisoning (doesn't stick though) and a critical Devil backfire. After that, everything goes back to normal. I used the Assembly patcher to use the .dmp file that came with the download. These are my parameters for ESUS_HACK_DATA: 0E 19 00 00 00 05 D2 08 00 06 D2 08 00 07 D2 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 This is the event file I used: #include EAstdlib.eventORG $D20500Support1:ITGC Rebecca ArmadsENDAORG $D20600Support2:ITGC Lowen DurandalENDAORG $D20700Support3:ITGC Eliwood ExcaliburENDA Quote Link to comment Share on other sites More sharing options...
CT075 Posted November 29, 2013 Share Posted November 29, 2013 -The first enemy to attack on the following enemy phase performs an amazing six-hit combo, including a poisoning (doesn't stick though) and a critical Devil backfire.this should not be a problem obviously it's working perfectly nothing to see here folks Quote Link to comment Share on other sites More sharing options...
Aleph Posted November 29, 2013 Author Share Posted November 29, 2013 (edited) ^ Did you clear the event pointer using an ASMC to the function the hack provides? It doesn't sound like you did. You really need to clear that pointer. Guys, if you want the hack moved you will have to reassemble it. Adding data to it is fine, but re-assembling the source is the only sane way to change where it is located. There are many more references to update than you probably think there are. The source file was written so only one place has the "0x08D00000" allocation address, but the resulting .dmp has many, many values that are derived from that. I've offered to re-assemble the source with a custom allocation address for anyone who needs it. This will also change the value of ESPC_FUNC_ORIGIN, which means the value you use as the ASMC argument to clear the pointer will change too. The .log file that the assembler outputs, which is still available for viewing in the output folder, reports things like how many bytes the hack's size is and where ESPC_FUNC_ORIGIN is. Also note that this project is the most recent thing I've worked on, so the .rss feed in my signature has a direct link to the files... Edited November 29, 2013 by Aleph Quote Link to comment Share on other sites More sharing options...
Vennobennu Posted November 29, 2013 Share Posted November 29, 2013 (edited) Oops, missed that part. I reassembled the events with the ASMC command and now it works perfectly. Oh well, it was worth seeing the Astra brigand anyhow. For anybody else wanting to use this, by default the function you want to call (ESPC_FUNC_ORIGIN) is located at 0x8D00250. Since it's in thumb mode, you'll want your support event to say ASMC $D00251. Edited November 29, 2013 by Vennobennu Quote Link to comment Share on other sites More sharing options...
Brendor Posted November 29, 2013 Share Posted November 29, 2013 wait now I'm confused. isnt the support system supposed to work normally like the "Support" command is available after waiting next to the supporting unit for a number of turns and then the hack reads what pointer is assigned to the support level? so what's the asmc for? Quote Link to comment Share on other sites More sharing options...
Aleph Posted November 29, 2013 Author Share Posted November 29, 2013 (edited) Exactly what I said it's for. We discussed this in the PM: There's a pointer in the WRAM that I "created" that, when set to a non-null value, will fire the events pointed to by that pointer when you are in the unit menu (where you would normally select Support/Visit/Wait etc.). This hack sets that pointer when you choose a unit to support with, which is done normally. This only occurs if units and the support level involved with the support you've executed are in the list at ESUS_DATA_ORIGIN. If you do not unset that pointer then the same event will fire every time that menu code is reached from then on. There's no convenient way for me to program it to be cleared automatically (I've looked into it some though) so I've provided an alternative solution - clear the pointer yourself using the ASMC. Edited November 29, 2013 by Aleph Quote Link to comment Share on other sites More sharing options...
Brendor Posted November 29, 2013 Share Posted November 29, 2013 So the asmc goes in the assembled event? Okay gotcha Quote Link to comment Share on other sites More sharing options...
Aleph Posted November 29, 2013 Author Share Posted November 29, 2013 Yes, it goes into your custom event. Quote Link to comment Share on other sites More sharing options...
Brendor Posted November 29, 2013 Share Posted November 29, 2013 Awesome ^_^ can we start the FE9 reinforcements now? Quote Link to comment Share on other sites More sharing options...
Aleph Posted November 30, 2013 Author Share Posted November 30, 2013 I dunno can we? Quote Link to comment Share on other sites More sharing options...
Brendor Posted November 30, 2013 Share Posted November 30, 2013 Well I mean I need your assistance so it really depends on you.. Quote Link to comment Share on other sites More sharing options...
Aleph Posted November 30, 2013 Author Share Posted November 30, 2013 (edited) Yeah I mean I need to make sure this Event Support thing is able to be used by Agro first. I can multi task but I'm doing that already. Edited November 30, 2013 by Aleph Quote Link to comment Share on other sites More sharing options...
Brendor Posted November 30, 2013 Share Posted November 30, 2013 oh my bad I thought the Event thing was all done 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.