Arch Posted May 22, 2012 Author Share Posted May 22, 2012 Alright, I've removed "Pierce" from that list of actions (since, as you said, it's not actually an action). If Nintenlord adds Poison and DevilReversal macros, I could add those to the command list for FE8 battles as well. Quote Link to comment Share on other sites More sharing options...
shadowofchaos Posted May 22, 2012 Share Posted May 22, 2012 (edited) Alright, I've removed "Pierce" from that list of actions (since, as you said, it's not actually an action). If Nintenlord adds Poison and DevilReversal macros, I could add those to the command list for FE8 battles as well. [8:54:22 PM] shadowofchaos725 (Rey): #define Pierce(combatantNumber,damage) "_SETVAL 1 combatantNumber+damage*0x100+0xC0000000; _SAVEFORBATTLE"[8:54:28 PM] shadowofchaos725 (Rey): That's Pierce under "Unit Helpers" [8:55:03 PM] shadowofchaos725 (Rey): it's probably something like this [8:55:30 PM] shadowofchaos725 (Rey): #define Poison(combatantNumber,damage) "_SETVAL 1 combatantNumber+damage*0x100+0x400000; _SAVEFORBATTLE" [8:56:02 PM] shadowofchaos725 (Rey): #define DevilReversal(combatantNumber,damage) "_SETVAL 1 combatantNumber+damage*0x100+0x800000; _SAVEFORBATTLE" So add it in the Unit Helpers file in the EA Standard Library Folder under "#ifdef _FE8_" ... at least until Nintenlord's next release if you want to use it: #define Poison(combatantNumber,damage) "_SETVAL 1 combatantNumber+damage*0x100+0x400000; _SAVEFORBATTLE" #define DevilReversal(combatantNumber,damage) "_SETVAL 1 combatantNumber+damage*0x100+0x800000; _SAVEFORBATTLE" Edited May 22, 2012 by shadowofchaos Quote Link to comment Share on other sites More sharing options...
Nintenlord Posted May 22, 2012 Share Posted May 22, 2012 (edited) Alright, if someone can supply all the macros for FE8 fixed battles, then I'll add them (I don't like adding incomplete support and my FE8 fixed battle knowledge is limited). I'd also prefer if the macros were similar to the FE6 and FE7 cases: #define AttackerHit(damage,lastAttack) #define DefenderHit(damage,lastAttack) #define AttackerPoison(damage,lastAttack) #define DefenderPoison(damage,lastAttack) #define AttackerHurtItself(damage,lastAttack) #define DefenderHurtItself(damage,lastAttack) #define AttackerMiss(lastAttack) #define DefenderMiss(lastAttack) #define AttackerCritical(damage,lastAttack) #define DefenderCritical(damage,lastAttack) #define AttackerNoDamage(lastAttack) #define DefenderNoDamage(lastAttack) #define AttackerSilencer(lastAttack,targetHP) #define DefenderSilencer(lastAttack,targetHP) #define AttackerPierce(damage,lastAttack) #define DefenderPierce(damage,lastAttack) #define AttackerSureShot(damage,lastAttack) #define DefenderSureShot(damage,lastAttack) #define AttackerBigShield(damage,lastAttack) #define DefenderBigShield(damage,lastAttack) #define EndOfBattle The lastAttack parameter can be removed if FE8 has nothing like it. EDIT: Took a quick look at the tutorial. Here's what I have problems with: [NoAI] ... *Tile changes stuff* Could use a rewrite. You can use this description I wrote for MK404 as base, it should apply for all 3 GBA games: If you have no problems using something other than EA for tile changes, you can always try learning Tiled:http://serenesforest...showtopic=26486 It shouldn't be too much of a problem to learn. But if you want to use EA, I'll give you s short description. First, you'll need to add this definition, since I'm an idiot and forgot to add it for FE6 and 8 even though they use identical format >_>: #define TileMap(TCN,X,Y,W,H,TilePointer) "BYTE TCN X Y W H 0 0 0; POIN TilePointer" #define TileMapEnd "WORD 0xFF 0 0" X and Y are the coordinates of top-left corner of the change. W and H are width and height respectably. TilePointer is a pointer to the tile ID's. Since every tile ID has 2 bytes, you should use SHORT codes and format the ID's so that it in the same form as the change itself: TileChangeList: TileMap(0,5,6,3,3,VillageRuin) TileMap(1,13,2,3,3,VillageRuin) TileMap(2,4,12,3,3,VillageRuin) TileMapEnd VillageRuin: SHORT topLeftTile topMiddleTile topRightTile SHORT midLeftTile midMiddleTile midRightTile SHORT botLeftTile botMiddleTile botRightTile Reference tileset should have the tile ID's you are searching for. Also, a word about the order of tile changes, when tile changes overlap, the game will automatically use the latter one in the list, so put village gate closings after the village ruinings. Most tile changes will happen automatically, so you won't have to worry about that much. I don't know any codes for causing map changes, so I can't help you with that (FE8 only). So yeah, ask if you have any questions or want more/better clarification. It requires you to use the latest version as it uses WORD/SHORT instead of CODE. The pointer code (org 0xC9C9C8+(4*0x59); POIN pointer) can be replaced with EventPointerTable macro. Also, the TileMap parameters don't have to be in 0x format, since BYTE always has the correct size in bytes, unlike with CODE. You also mixed labels and headers. A label is something like this: label: Label is just a name for the offset it is on. What you use the name label for is actually a variable, which you defined correctly. FE6 and FE8 templates could be updated to match the FE7 one, latest EA release comes with suitable ones. Now, another one that gets a lot of use from me is the seize command.Seize(eventID,pointer,x-coordinate,y-coordinate) As you should notice it follows the same basic setup as a village event. You can not include the nameofevent, which will result in it simply loading the event specified as the ending event. That would look like this: Seize(eventID,x-coordinate,y-coordinate) There's no Seize with 3 parameters since the pointerless Seize only works if event ID is 3. Once your event (village conversation, 'Talk' event, reinforcements, etc.) is over, you need to tell the game to stop reading for events. Just remember to end all of your events with the following code: ENDA You should call it scene instead of event, as you defined in the start of the tutorial. And I'll highlight this for emphasis, because it's just so true: Manipulating darkness is one of the ways to give your events that extra level of "polish." Play with it; it may seem somewhat trivial (I thought it was for some time), but you can be surprised how good your events can feel by using darkness to properly hide things. You really hit the nail with this one. I really appreciate your effort with these tutorials, Arch. Without these, almost no-one would be using EA. And I do understand I make your life difficult by changing things all the time, but that's the nature of things. I consider every change I've made to be worth it though. Edited May 22, 2012 by Nintenlord Quote Link to comment Share on other sites More sharing options...
Psych Posted May 22, 2012 Share Posted May 22, 2012 I haven't read the whole thing in depth yet, but how is this different from the first one? Cause it almost looks identical. Quote Link to comment Share on other sites More sharing options...
Nintenlord Posted May 22, 2012 Share Posted May 22, 2012 Few extra chapters and minor updates sprinkled here and there. Quote Link to comment Share on other sites More sharing options...
Arch Posted May 22, 2012 Author Share Posted May 22, 2012 (edited) I haven't read the whole thing in depth yet, but how is this different from the first one? Cause it almost looks identical. I feel like the biggest change is in the beginning. Most of my efforts were in revising the beginning to explain things in a more understandable way for beginners. A common complaint with the 1st Edition was that I sort of forced people who didn't know how to swim to jump into the deep end of the pool. I've also tried to make things more cogent, and more comprehensive in the later chapters. I've incorporated differences between games into the main tutorial, rather than shoving them off into a side chapter. Eventually I'll have a chapter covering World Map events, and the tutorial will, in general, cover more content than ever before. [NoAI] ... I don't know what's up with this one. Cam mentioned that, in the EA standard library, the macro is "[00000000]". I might be running an old version of EA, but [NoAI] works fine for me, I've used it in Elibian Nights in literally every chapter. A quick fix would just be to remove the brackets from the definition, so that "NoAI" isn't handled differently than "[AttackInRange]," and the myriad of other AI labels. Edited May 22, 2012 by Arch Quote Link to comment Share on other sites More sharing options...
Nintenlord Posted May 23, 2012 Share Posted May 23, 2012 (edited) All AI definitions work the same way with the latest version: And it's better for definitions to be full parameters, adding [] every time you want to use AI definitions is just waste of time. It tells nothing about the actual AI you are using, if people were interested in the way AI was actually implemented, they wouldn't use definitions in the first place. EDiT: You probably should mention at the start of tutorial which version your tutorial is made for AKA the version you use. It would avoid some confusion. I still have all the post 7.0 versions stored somewhere, so I can even put that version up for download so you can link to it. Edited May 23, 2012 by Nintenlord Quote Link to comment Share on other sites More sharing options...
Crimson Red Posted May 23, 2012 Share Posted May 23, 2012 You probably should mention at the start of tutorial which version your tutorial is made for AKA the version you use. It would avoid some confusion. I still have all the post 7.0 versions stored somewhere, so I can even put that version up for download so you can link to it. This and since almost everyone uses your tutorials to learn events AFAIK, it's best if you keep things as up to date as possible to minimize errors from people who aren't so familiar with events that they can figure out the differences and whatnot Quote Link to comment Share on other sites More sharing options...
Nintenlord Posted May 24, 2012 Share Posted May 24, 2012 (edited) Ok, now I look like an ass. I didn't notice I already had macros for FE8 battles >_>. Sorry for the confusion. EDIT: Looking into FE8 battles right now (because I don't like releasing anything that I'm this confused about...) and it seems I've found the FE8 replacement for move manuals. It's done the same way as battles are, too. Also, all fixed battle action lists seem to start with "_SETVAL 0xD 0x0". Has anyone tested what it does? EDIT2: Does this seem right to everyone? #ifdef _FE8_ #define StartBattle "_SETVAL 0xD 0x0" #define NormalDamage(combatantNumber,damage) "_SETVAL 1 combatantNumber+damage*0x100; _SAVEFORBATTLE" #define CriticalHit(combatantNumber,damage) "_SETVAL 1 combatantNumber+damage*0x100+0x00010000; _SAVEFORBATTLE" #define MissedAttack(combatantNumber,damage) "_SETVAL 1 combatantNumber+damage*0x100+0x00020000; _SAVEFORBATTLE" #define Silencer(combatantNumber,damage) "_SETVAL 1 combatantNumber+damage*0x100+0x00080000; _SAVEFORBATTLE" #define SureShot(combatantNumber,damage) "_SETVAL 1 combatantNumber+damage*0x100+0x00400000; _SAVEFORBATTLE" #define Poison(combatantNumber,damage) "_SETVAL 1 combatantNumber+damage*0x100+0x00400000; _SAVEFORBATTLE" #define DevilReversal(combatantNumber,damage) "_SETVAL 1 combatantNumber+damage*0x100+0x00800000; _SAVEFORBATTLE" #define Pierce(combatantNumber,damage) "_SETVAL 1 combatantNumber+damage*0x100+0xC0000000; _SAVEFORBATTLE" #define EndAttack "_SETVAL 1 0xFFFFFFFF; _SAVEFORBATTLE" #endif Why are Poison and SureShot exactly same? My guess is that Poison has one 0 too many, am I correct? Edited May 24, 2012 by Nintenlord Quote Link to comment Share on other sites More sharing options...
CT075 Posted May 24, 2012 Share Posted May 24, 2012 I'm thinking one of them should be 0x00200000 Quote Link to comment Share on other sites More sharing options...
Arch Posted May 24, 2012 Author Share Posted May 24, 2012 And it's better for definitions to be full parameters, adding [] every time you want to use AI definitions is just waste of time. It tells nothing about the actual AI you are using, if people were interested in the way AI was actually implemented, they wouldn't use definitions in the first place. Ugh. It feels so weird to me not to have those brackets. But fine, I guess I'll bite. That's probably why I never updated; I tried updating and the EA just broke on me, this explains why. Quote Link to comment Share on other sites More sharing options...
Nintenlord Posted May 24, 2012 Share Posted May 24, 2012 Yeah, handling [[shit]] once broke EA pretty badly (I still remember the debugging. Oh god the horrors >_<). I first made it not break and then made it actually handle it properly. Quote Link to comment Share on other sites More sharing options...
Arch Posted May 24, 2012 Author Share Posted May 24, 2012 Yeah, handling [[shit]] once broke EA pretty badly (I still remember the debugging. Oh god the horrors >_<). I first made it not break and then made it actually handle it properly. Well, I guess it's time to finally update, then. Just have to bite the bullet and abandon my beloved brackets. Turns out I was running v8.5, by the way. I was a whole version behind the rest of the world! Quote Link to comment Share on other sites More sharing options...
CT075 Posted May 24, 2012 Share Posted May 24, 2012 i still think you should (for a short period at least) just remove inner brackets and/or just throw a warning instead. i can see a use for a tuple of tuples but i dunno how many others would make use of it Quote Link to comment Share on other sites More sharing options...
Nintenlord Posted May 25, 2012 Share Posted May 25, 2012 And I still think that is by far the worst option right now. Changing behavior just to rechange it later after all the bitching we've done would just even further confuse people who don't actively follow development. And I just checked, the AI codes have always been like this in official EA releases. AI codes were added in EAstdlib version 2.2 which came with EA version 8.2 and all AI codes had [] in the definitions themselves from the start. Quote Link to comment Share on other sites More sharing options...
Nintenlord Posted May 28, 2012 Share Posted May 28, 2012 Ok, now that Dropbox is finally working with me, I can share link to the 8.5 version: https://dl.dropbox.com/u/341300/Event%20Assembler/Old%20Versions/8.5.zip Quote Link to comment Share on other sites More sharing options...
shadowofchaos Posted July 2, 2012 Share Posted July 2, 2012 (edited) Not really sure on this FIGH event... just experimentation. Maybe Cam can debug this crap. I'm too lazy to. XD FIGH Attacker Defender Pointer [Parameter1, Parameter2, Parameter3, Parameter4] First Parameter "Weapon Equip (Item Value in hex)" + "100 hit -- dmg -- crit" for ally + "-- hit -- dmg -- crit" for Other Ally/NPC/Enemy Assuming that it's use is for "Support" type weapons, like Healing Staves, Dancing Rings, and the actual Dance/Play command items. Second Parameter: "Weapon Durability Remaining + 1" if Parameter 1 has something in it. Putting any value here other than 0x00 will cause "Parameter 1" to be active... and show a non-existent sword item if Parameter 1 is "0x00". Third Parameter: WTF Fourth Parameter: Anything other than 0x00 will cause the fight to go to "non-controlled" mode, as if you actually attacked with the attacker on a turn, and the stats are factored in if they will double... and critical, depending on the RNG. Fourth Parameter will cause freezing if the first or second parameter have a value other than "0x00" in them. Edited July 2, 2012 by shadowofchaos Quote Link to comment Share on other sites More sharing options...
CT075 Posted July 2, 2012 Share Posted July 2, 2012 oh god rey don't add more to my list Quote Link to comment Share on other sites More sharing options...
Nintenlord Posted July 2, 2012 Share Posted July 2, 2012 FIGH Attacker Defender Pointer [Parameter1, Parameter2, Parameter3, Parameter4] First Parameter "Weapon Equip (Item Value in hex)" + "100 hit -- dmg -- crit" for ally + "-- hit -- dmg -- crit" for Other Ally/NPC/Enemy Assuming that it's use is for "Support" type weapons, like Healing Staves, Dancing Rings, and the actual Dance/Play command items. Second Parameter: "Weapon Durability Remaining + 1" if Parameter 1 has something in it. Putting any value here other than 0x00 will cause "Parameter 1" to be active... and show a non-existent sword item if Parameter 1 is "0x00". So having Parameter1 be non-0 causes you to have stats "100 hit -- dmg -- crit" for ally and "-- hit -- dmg -- crit" for Other Ally/NPC/Enemy? Assuming it does, here's a macro implementation of notes: #define NonControlled "0x01 << 24" #define Controlled "0x00 << 24" #define UseSupportItem(itemID) "itemID" #define UseSupportItemWithDurability(itemID, durability) "itemID + (durability - 1) << 8" Quote Link to comment Share on other sites More sharing options...
Arch Posted June 8, 2014 Author Share Posted June 8, 2014 (edited) http://feuniverse.us/t/archs-guide-to-chapter-construction/110 After forever and a half I've finally updated this thing. This is the definitive version of the tutorial, split into two (Eventing for Dummies, a primer, and Arch's Guide to Chapter Construction). It's pretty much finished. Just have to write the world map events chapter and the epilogue, and possibly go back and add to the writing conditions chapter. Only available on FEU because shameless plug and also I love the forum setup: designed for ease-of-reading. Edited June 8, 2014 by Arch Quote Link to comment Share on other sites More sharing options...
Fateborn Posted June 8, 2014 Share Posted June 8, 2014 -heavy breathing- I'm disturbed with this change. Does this cover everything that eventing has to offer? Quote Link to comment Share on other sites More sharing options...
Brendor Posted June 8, 2014 Share Posted June 8, 2014 (edited) Why not include source code for the custom assembly hacks? Probably you don't have them available but I think they should be included with the .dmp's. Also if you're going to make a chapter on assembly through events I think you should include other nifty things like displaying spell animations on a map (which I've sadly never seen in a rom hack so far) or lightning for instance instead of just conditions. Just my 2 cents, I'm glad the tut got updated, you do a swell job Does this cover everything that eventing has to offer? No. The ea doc has more macros and codes to use not to mention that you could use assembly to create anything that's not already in the game's programming. Edited June 8, 2014 by Brendor the Barbarian Quote Link to comment Share on other sites More sharing options...
Arch Posted June 8, 2014 Author Share Posted June 8, 2014 @Fateborn: It doesn't cover everything, but it covers everything I've used/learned throughout my years of eventing. I try to make sure everything useful is well covered. @Brendor: I can go digging around for the source, and I'll add another section on those ASMCs (could you PM explain that spell animations thing I've never done it but it sounds like something awesome to include). Quote Link to comment Share on other sites More sharing options...
Brendor Posted June 8, 2014 Share Posted June 8, 2014 Idk if the sources will be vastly helpful because most people on the forums don't know assembly but couldn't hurt Quote Link to comment Share on other sites More sharing options...
CT075 Posted June 8, 2014 Share Posted June 8, 2014 there's some table somewhere that lists a bunch of asmc's that correspond to spell values spells on map is just ASMC [spellcode] 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.