Primefusion Posted January 31, 2015 Share Posted January 31, 2015 There should be a file named "World Map Helpers.txt". If you open the file in Word, Wordpad, or some other text editor that isn't Notepad is everything still garbled? You may want to try re-downloading EA as well. Quote Link to comment Share on other sites More sharing options...
Rickochet Posted January 31, 2015 Share Posted January 31, 2015 Ah! Everything ungarbled when i used notepad++. So I looked through the world map help.txt with nothing related to PUTSPRITE, FADETOWM, or CODE. I also checked for latest version of EA but I haven't found anything new in the new downloaded standard libraries. I pasted the section that isn't working. Can you tell me what the correct parameter order is for those three codes? I feel like I'm missing something simple. Ex. Loading units would be: LOU1 (group of unit name here) SCRO STAL 20 REMOVETEXTBOX TEXTBOXTOTOP STAL 60 FADETOWM [64,680] 0x76 //This line is not working STAL 60 PUTSPRITE 0x18 [166,621] 0x00 0x10 0x80 // this line is not working STAL 0 TEXTWM 0x6C2 STAL 20 SCRO REMOVETEXTBOX REMSPRITE 0x2 0xE8 _ASM0x42 0xB2FB1 STAL 20 _0xCA MUEN 4 _0xAD _0xAE STAL 60 ///CODE 0x0 0x0 0x0 0x0 //and this line is not working. Quote Link to comment Share on other sites More sharing options...
Primefusion Posted February 1, 2015 Share Posted February 1, 2015 CODE has been deprecated. Use BYTE instead. FADETOWM and PUTSPRITE actually take two additional unknown parameters at the end. Just use 0x00 for those (Make sure to consult the Event Assembler Language.txt file for syntax). /* Not this */ FADETOWM [64,680] 0x76 //This line is not working /* This */ FADETOWM [64,680] 0x76 0x00 0x00 /* Not this */ PUTSPRITE 0x18 [166,621] 0x00 0x10 0x80 // this line is not working /* This */ PUTSPRITE 0x18 [166,621] 0x00 0x10 0x80 0x00 0x00 Quote Link to comment Share on other sites More sharing options...
Rickochet Posted February 1, 2015 Share Posted February 1, 2015 Thank you so much! This has been giving me a headache for the last two weeks! Quote Link to comment Share on other sites More sharing options...
OOTN Posted March 17, 2015 Share Posted March 17, 2015 Does the Event Assembler completely overwrite events I edit? I'm trying to make my own custom chapter from scratch, but every time I try to start a new game it just crashes when I try to load a map. Do I need to 'remove' the existing prologues events somehow before I can write my own? I'm following the tutorials exactly and I just don't get why things aren't working for me. Quote Link to comment Share on other sites More sharing options...
CT075 Posted March 17, 2015 Author Share Posted March 17, 2015 show us your events Quote Link to comment Share on other sites More sharing options...
OOTN Posted March 17, 2015 Share Posted March 17, 2015 Looks like the devil was in the details after all. I think I'm finally getting the hang of this! Quote Link to comment Share on other sites More sharing options...
CT075 Posted March 17, 2015 Author Share Posted March 17, 2015 what was the problem, so that other people can learn from your experiences? Quote Link to comment Share on other sites More sharing options...
OOTN Posted March 17, 2015 Share Posted March 17, 2015 Several small mistakes, probably brought on by sleep deprivation. I decided to learn to hack FE last night and I've done nothing else for the past thirteen hours or so. Though I'll admit I've been driven a bit by frustration. I forgot to seal one of my groups with UNIT, I mislabeled the text I wanted to use, and I wasn't using the LUA1 command properly either. Quote Link to comment Share on other sites More sharing options...
CT075 Posted March 17, 2015 Author Share Posted March 17, 2015 (edited) (i assume you mean LOU1? offhand i can't think of a code called LUA1) to answer your initial question, EA does not "overwrite" old events unless you tell it to (I would advise strongly against that). What it does instead is write the events somewhere else in the ROM (typically into free space, although "expanded space" beyond the original 16MB is also valid) - this is what your ORG command specifies. To tell the game to run your events, you need to change the pointer to the chapter's events; this is typically done with the macro EventPointerTable (depending on which tutorial you're following, if any, you may see this step replaced with "ORG 0xC9C9C8+4*id; POIN ThisChapter" or something similar - really old tutorials might even tell you to do this step in Nightmare). By doing this, even though the old events are still present in the ROM, nothing is ever actually telling the ROM to use those events (the only place they would be used has been changed, to your events!). Edited March 17, 2015 by CT075 Quote Link to comment Share on other sites More sharing options...
OOTN Posted March 17, 2015 Share Posted March 17, 2015 So how does the EA work in regards to persistent things like levels and equipment? Will they just keep the levels and equipment they had before if I leave those parameters blank? If I wrote UNIT Lyn 0x02 Lyn Level(0,Ally,False) [12, 3] [12, 3] NoAI Would she show up as whatever level she was in the chapter before with the same items? If not, what do I have to do to accomplish that? Quote Link to comment Share on other sites More sharing options...
CT075 Posted March 18, 2015 Author Share Posted March 18, 2015 (edited) loading units that exist in save data ignores all inventory, level, class etc parameters set in the event itself and instead default to the value that's already there so, to answer your question, yes Edited March 18, 2015 by CT075 Quote Link to comment Share on other sites More sharing options...
OOTN Posted March 18, 2015 Share Posted March 18, 2015 It seems editing text with FEditor causes the game to crash. Do I have to use FEditor on the ROM before I use anything else? That's a bit irritating. Is there a way to let me use FEditor freely even if I edit the ROM with EA and Nightmare? Quote Link to comment Share on other sites More sharing options...
OOTN Posted March 18, 2015 Share Posted March 18, 2015 (edited) Well, I don't even know what happened this time. I even used FEditor first on a clean ROM. [OpenRight][LoadFace][0x16][0x01]ou there! You are our Tactician, yes?[A] <-----This was the problem. I hope you're good. We'll need all the help we can get today.[A] [HalfCloseEyes] I suspect they're hiding out in the old mines to the west.[A] We'll need luck as well as skill if we're going to flush them out.[A] [MoveRight] Move out![A] [X] And I'm loading it with: OOBB LOU1 CityGuard BadGuys ENUN TEX1 0x815 REMA ENDA EDIT: Argh. Another typo did it, it seems. Needed to separate the beginning of the text from the opening line. Edited March 18, 2015 by OOTN Quote Link to comment Share on other sites More sharing options...
OOTN Posted March 18, 2015 Share Posted March 18, 2015 Hahaha! I got this stuff working at last! Custom opening, custom characters, custom map and enemies. And nothing has gone wrong! Looks like I've finally gotten the hang of the basics, I can get started actually modding now. Quote Link to comment Share on other sites More sharing options...
CT075 Posted March 18, 2015 Author Share Posted March 18, 2015 you're going to want to save with FEditor before making any edits this isn't mandatory but it's strongly recommended for a reason i don't want to get into Quote Link to comment Share on other sites More sharing options...
TheIcarus Posted April 1, 2015 Share Posted April 1, 2015 Alright so I'm trying to make an event, #define DISABLE_TUTORIALS#include EAstdlib.eventEventPointerTable(0x06,Pointers)ORG 0xD80000Pointers:POIN Turn_eventsPOIN Character_eventsPOIN Location_eventsPOIN Misc_eventsPOIN TrapData TrapDataPOIN Bad Bad Bad BadPOIN Good Good Good GoodPOIN Opening_event Ending_eventGood:UNIT 0x01 0x01 0x01 Level(1, Ally, 0) [14,9] [12,5] [0x016, 0x01, 0x6B] NoAIUNIT 0x03 0x02 0x01 Level(1, Ally, 0) [14,9] [13,6] [0x01, 0x6B] NoAIUNITBad:UNIT 0x3E 0x39 0x3E Level(1, Enemy, 0) [3,2] [3,2] [0x1F] GuardUNIT 0x5F 0x0A 0x3E Level(1, Enemy, 0) [3,2] [2,4] [0x01] AttackInRangeUNIT 0x5F 0x0A 0x3E Level(1, Enemy, 0) [3,2] [4,5] [0x01] PursueWithoutHeedUNIT 0x5F 0x28 0x3E Level(1, Enemy, 0) [2,4] [6,3] [0x01] AttackInRangeUNITTurn_events:TurnEventPlayer(0x0,Opening_event,1)TurnEventPlayer(0x05,Goodguys,2)TurnEventPlayer(0x07,Talk,2)End_MAINCharacter_events:End_MAINLocation_events:End_MAINMisc_events:CauseGameOverIfLordDiesDefeatBoss(Ending_event)End_MAINTrapData:End_MAINOpening_event:OOBBLOU1 GoodENUNTEX1 0x815REMALOU1 BadENUNTEX1 0x816REMAENDAEnding_event:ENDA// EventsGoodguys:LOU1 GoodguysENUNENDATalk:TEX1 0x817REMAENDA// Manual Movement// Scripted Fights// UnitsGoodguys:UNIT 0x2F 0x28 0x00 Level(1, Ally, 0) [6,9] [6,9] [0x01] NoAIUNIT 0x30 0x28 0x00 Level(1, Ally, 0) [5,9] [5,8] [0x16] NoAIUNIT// Shop DataMESSAGE Events end at offset currentOffset As you can see from this, I'm trying to have reinforcements come on turn 2. However every time I try the dialouge plays, but the units don't show up. I've checked over this and it looks like everything was entered correctly (or at least as far as I know, since I learned how to mod yesterday) is there anything I'm missing? Quote Link to comment Share on other sites More sharing options...
SquareRootOfPi Posted April 1, 2015 Share Posted April 1, 2015 How are you able to assemble a file with duplicate labels? Does EA not complain that you already defined GoodGuys? Unrelated, but if you have two events occuring on the same turn you can just load them under the same label, so instead of Goodguys: LOU1 GoodguysGroup ENUN ENDA Talk: TEX1 0x817 REMA ENDA you can just do Goodguys: LOU1 GoodguysGroup ENUN TEX1 0x817 REMA ENDA and remove the other event. Quote Link to comment Share on other sites More sharing options...
supnaplamQW Posted April 29, 2015 Share Posted April 29, 2015 I'd like to know how one finds Condition IDs(with evential and without evential) and Event IDs in order to code this: If Bandit is dead,then Zagan will become an ALLY unit(otherwise, nothing happens) , and other conditionals for when I plan to do so when making the hack I'm planning. I've been told that it's better to ask the question here rather than a new thread. Quote Link to comment Share on other sites More sharing options...
Agro Posted April 29, 2015 Share Posted April 29, 2015 are you modifying an existing chapter or making a new one? if you're making a new one you can set the event IDs yourself. for example, if Bandit's death quote triggers 0x07 to TRUE then that's the ID you run with. Later on when you make a condition, and you need to use the ID that says "Bandit dead" then you would use 0x07. new chapter = new slate so all IDs between 0x04-0x3F are yours to use. if you're modifying a chapter then you need to disassemble the chapter and find the corresponding events to get the IDs. Quote Link to comment Share on other sites More sharing options...
supnaplamQW Posted April 29, 2015 Share Posted April 29, 2015 Alright,that very information excites me to the core :))) Though,I need to make sure of a couple of things. Am I to assume that both conditions and ASMroutines are also can be completely custom made under this new map as well? And as for the pointer...how xan I make this map accessible in place of the prologue?Or do I have to make a custom map,set that custom map to an unused pointer in nightmare,and direct the prologue to said pointer? I don't understand the process of setting things,but I'll try my best to get as far as I can. Again,thank you Quote Link to comment Share on other sites More sharing options...
Agro Posted April 29, 2015 Share Posted April 29, 2015 I'm quite sure Arch's tutorial covers custom maps, if not, then UT will. Everything can be custom made, within reason. stuff like "if character x is dead, y happens"is incredibly easy. all you need to do is attach the appropriate event ID to the event and then refer to it later. things like "if character has a stat of 20" or "if A and B are at A support" are more complex Quote Link to comment Share on other sites More sharing options...
supnaplamQW Posted April 30, 2015 Share Posted April 30, 2015 (edited) I'm sorry,but there's something that is really confusing to me.I feel that there's something big I'm missing here with these 2,still,more like the lines of finding these via nighmare and hex editor.I can find some via nightmare and evential, I think my problem is finding some of them in the first place(as well as Condition ID) in the first place,how how I'm using them. I feel like an idiot for not getting this part down.I also need to see some stuff regarding if I can use block(IE ChestOpened, what you call those) The thing I'm trying to perform is loading Assassins from the chest after that chest had opened,for multiple turns on end,as I planned for one of my main components of a hack I want to make is that idea. Here's what I did: #define DISABLE_TUTORIALS #include EAstdlib.event EventPointerTable(0x06,Pointers) ORG 0xD80000 Pointers: POIN Turn_events POIN Character_events POIN Location_events POIN Misc_events POIN TrapData TrapData POIN Bad Bad Bad Bad POIN Good Good Good Good POIN Opening_event Ending_event Good: UNIT 0x02 0x26 0x02 Level(1, Ally, 0) [9,7] [9,7] [0x58, 0x46, 0x68] NoAI UNIT 0x2D 0x23 0x2D Level(1, Ally, 0) [10,6] [10,6] [0x57, 0x37] NoAI UNIT Bad: UNIT 0x3E 0x22 0x00 Level(1, Enemy, 1) [1,2] [1,2] [0x53] HealUnits UNIT 0x3F 0x18 0x00 Level(1, Enemy, 1) [1,3] [1,3] [0x35, 0x32] AttackInRange UNIT Reinforcements: UNIT 0x3A 0x28 0x00 Level(1, Enemy, 1) [0,1] [0,1] [0x03] PursueWithoutHeed UNIT Shadows: UNIT 0xFC 0x3E 0x00 Level(20, Enemy, 0) [11,6] [11,6] [0x0D] PursueWithoutHeed UNIT Turn_events: TurnEventPlayer(0x0,Opening_event,1) TURN 0 Turn2[2,5] 0x0 0x00 TURN 0 Mendel[1,30] 0x8 0x00 End_MAIN Turn2: CMOF LOU1 Reinforcements ENUN Character_events: End_MAIN Location_events: Chest(0x6D,11,6) End_MAIN TileChanges: TileMap(0x0F,11,6.,0x01,0x01,ChestOpened) TileMapEnd ChestOpened: BYTE 0x04 0x00 ALIGN 4 End_MAIN Misc_events: CauseGameOverIfLordDies Mendel: IFET 0x01 ChestOpened LOU1 Shadows ENUN ELSE 0x02 ENIF 0x01 ENUF 0x24 ENIF 0x02 End_MAIN TrapData: End_MAIN Opening_event: OOBB LOU1 Good ENUN LOU1 Bad ENUN ENDA Ending_event: ENDA // Events // Manual Movement // Scripted Fights // Units // Shop Data MESSAGE Events end at offset currentOffset I suspect that one problem is those condition coordinates(particularly, 0x24,and 0x01),I don't know how to find the correct ones in hex or evential.I know this because the same problem happened after simpler coding attempts:After player phase 1,the game sort of stops in limbo with the units still doing their standing animation, but nothing else happens.Not to the point of full on crashing with the high pitched noise,but no further things can be done. Also,I suspect my logic to be somewhat off.My main concern is the turn event that says to have a condition starts on turn 1,but is for something that only start's if the following condition happens,hence why I put an ENUF there. EDIT:Y'know,this is a stupid question but,Is it better for someone like me to be working on a new chapter rather than modifying an old one?I don't understand at all the notion of assigning condition and event IDs,but I've been thinking about it lately.I guess I am working for an old one,seeing as my custom map is in the prologue's pointer. Edited April 30, 2015 by supnaplamQW Quote Link to comment Share on other sites More sharing options...
Agro Posted April 30, 2015 Share Posted April 30, 2015 (edited) Mendel: IFET 0x01 ChestOpened LOU1 Shadows ENUN ELSE 0x02 ENIF 0x01 ENUF 0x24 ENIF 0x02 End_MAIN No no... you're going about this wrong. "ChestOpened" in your case, is not an actual event. It's a label (that is, a marker for the Event Assembler to find). Imagine all you have is a page of paper that says "4 0". Well, "ChestOpened" is a little bit like a tab sticking out of that page, and every time you say "ChestOpened" is the Event Assembler it will go back to your book and look for the tab that says "ChestOpened". Then it will look at the information on that page. The information on that page could be anything. Shop data, tile changes, a character, ANYTHING. Since the game is looking for a tile change, it will simply interpret the data written there as a tile change, whether it really is a tile change or not. I can see what you're trying to do, but that's not how it works. The "Event ID" is one little flag. Imagine that it's a light, that's either on or off. When you say "IFET 1 1" you're effectively saying this: Condition 1: Check if Light 1 is on And if you say "IFET 3 1": Condition 3: Check if Light 1 is on The label "ChestOpened" doesn't actually have anything that turns on that switch. That's something else that you need to do, and, to be honest, is a bit of a pain in the ass. But what you need to do is this: Go to the "Main Code Helpers.txt" file. You'll see a line somewhere in there that says this: #define Chest(item,X,Y) "CHES 0 item [X,Y] 0x12" This line defines your chest macro. This means that whenever YOU write Chest(Vulnerary,12,3), to YOU that's what it looks like. But to the Event Assembler, it actually looks like "CHES 0 Vulnerary [12,3] 0x12". The 0 is the Event ID of the chest event. That means that it doesn't flick any "switch" for it. The chest macro automatically sets the event ID to 0, so you'll have to write it out manually. So now you need to change your line "Chest(0x6D,11,6)" to "CHES 0x08 0x6D [11,6] 0x12". This will make it so that the game turns on "Turn on Light 0x08", if you will. THEN you need to change this your IFET to this: Mendel: IFET 0x01 0x08//Condition 1: if Light 0x08 is turned on, LOU1 Shadows ENUN ELSE 0x02 ENIF 0x01 ENUF 0x24//Turn off Switch 0x24 ENIF 0x02 End_MAIN You also need to have spaces here (in between Turn2 and the [, and inbetween Mendel and the [): TURN 0 Turn2 [2,5] 0x0 0x00 TURN 0 Mendel [1,30] 0x8 0x00 Does that make things clearer? Edited April 30, 2015 by Agro Quote Link to comment Share on other sites More sharing options...
supnaplamQW Posted April 30, 2015 Share Posted April 30, 2015 So what you're saying is that once a 'label' is used up to define a set's type of events,it can't be used up for another type? Chest Opened is a label that defines a tilechange,hence cannot be used to define a condition,or is it that with conditions there can never be a label? If no label can't be used,then why could one be used for the Turn event? is it because the Trigger ID is associated with it already(before the ChestOpened)? Also,that 0x08 is an example of one of my confusions.How come it's 0x08;how did you find that?Is defining Event and Condition ID's within the scope of just Event assembler,w/ codes between 0x04 and 0x65 free game? 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.