Jump to content

Event Assembler Questions Thread


CT075
 Share

Recommended Posts

  • Replies 3.3k
  • Created
  • Last Reply

Top Posters In This Topic

I'm trying to figure out conditions now. At Part2, I'm trying to get a unit to load once character 0x25 is dead. It's not activating. How do I it?

#define DISABLE_TUTORIALS
#include EAstdlib.event

EventPointerTable(0x15,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 0x01 0x01 0x00 Level(1, Ally, 0) [13,9] [13,8] [0x01, 0x69, 0x6B] NoAI
UNIT 0x03 0x02 0x00 Level(1, Ally, 0) [12,9] [12,8] [0x01, 0x69, 0x6B] NoAI
UNIT 0x11 0x21 0x00 Level(1, Enemy, 0) [14,3] [13,3] [0x37] NoAI
UNIT


Bad:
UNIT 0x25 0x40 0x00 Level(1, Enemy, 0) [14,3] [12,3] [0x00] NoAI
UNIT

Turn_events:
TurnEventPlayer(0x0,Opening_event,1)
End_MAIN

Character_events:
End_MAIN

Location_events:
End_MAIN

Misc_events:
CauseGameOverIfLordDies
AREA 0x5 Part1 [12,5] [12,5]
End_MAIN

TrapData:
End_MAIN

Opening_event:
OOBB
LOU1 Good
ENUN
ENDA

Ending_event:
ENDA

// Events
Part1:
IFAF 0x01 0x7A2F1
LOU1 Bad
ENIF 0x01
ENUN
ENDA

Part2:
IFCD 0x06 0x25
LOU1 New1
ENUN
ELSE 0x07
ENIF 0x06
ENIF 0x07
ENDA

// Manual Movement

// Scripted Fights

// Units
New1:
UNIT 0x19 0x28 0x00 Level(1, Enemy, 0) [0,9] [2,9] [0x14] AttackInRange
UNIT

// Shop Data

MESSAGE Events end at offset currentOffset

AND I have another question.

Say I have two units that I want to join my team. And I have two units that can talk to either one of them

For example:

0x01(Ally) can talk to 0x03 and/or 0x04(Non-Allies) and both will join the team

0x02(Ally) can talk to 0x03 and/or 0x04(Non-Allies) and both will join the team

But I don't want the option to "Talk" be available once the first unit has recruited them. So say unit 0x01 talked to unit 0x03 first, then I don't need unit 0x01 to talk to unit 0x04 and 0x02 to talk to them either, so I don't have multiple events still active that give me the same result. Help?

Thanks

Edited by Avril Lavigne
Link to comment
Share on other sites

You're not calling the scene at all. Part2 is just sitting there with nothing attached to it. It's akin to a room in a house, but the room has no doors leading into it. Since you want this to trigger when someone dies, just give their death quote an ID. Then, have an AFEV that triggers when the death ID activates. The AFEV would call Part2.

For 'Pick Your Poison' style scenes, just have them share the same event ID.

Link to comment
Share on other sites

You're not calling the scene at all. Part2 is just sitting there with nothing attached to it. It's akin to a room in a house, but the room has no doors leading into it. Since you want this to trigger when someone dies, just give their death quote an ID. Then, have an AFEV that triggers when the death ID activates. The AFEV would call Part2.

For 'Pick Your Poison' style scenes, just have them share the same event ID.

Misc_events:
CauseGameOverIfLordDies
AREA 0x5 Part1 [12,5] [12,5]
AFEV 0x09 Part2 0x06
End_MAIN

Part2:
LOU1 New1
ENUN
ENDA

And made the Character's Death Quote ID 0x06 which triggered event Part2! It worked. Thanks.

Character_events:
CharacterEvent(0x0A,PartTalk1,0x01,0x11)
CharacterEvent(0x0A,PartTalk2,0x03,0x11)
End_MAIN

PartTalk1:
TEX1 0x815
REMA
TurnAlly(0x11)
ENDA

PartTalk2:
TEX1 0x816
REMA
TurnAlly(0x11)
ENDA

And this is what I did as far as "[Picking My] Poison" goes. If anyone wants to see how for future reference. Just use the same ID and it won't be able to be used again for any event. In this case I used 0x0A in my Character_events.

Edited by Avril Lavigne
Link to comment
Share on other sites

OK, I think i'm close to figuring this out :

org 0xC9C9C8+(4*0x55)
POIN TileChanges
org 0xCB1F00
TileChanges:
TileMap(0x00,0x15,0x1A,0x01,0x01,FirstDoorOpened)
TileMap(0x01,0x15,0x1C,0x01,0x01,ChestOpened)
TileMapEnd
FirstDoorOpened:
CODE 0x44 0x05 0x68 0x0D
CODE $FF
CODE $00
CODE $00
All on another file.But it says it stops at Line 8 Column 13.Why?
Link to comment
Share on other sites

http://pastebin.com/UXmztxM2

It shows a completely black screen, and then makes weird stereotypical computer noises. Then an error shows up on my computer. Something about an unsupported BIOS 8c. I know for a fact that my map and text are working, so the only thing left is the EA code I wrote. What did I screw up on?

Edited by Morva
Link to comment
Share on other sites

Hello, with FE7 I seem to be having some problem with the event assembler itself. I can get the offset for a chapter's events and disassemble it successfully into an empty txt, it all looks good in there, but then i assemble it and i get errors such as missing labels. It seems like certain chapters are being disassembled incorrectly? Does anyone else have this problem and/or know of a fix?

Link to comment
Share on other sites

Hello, with FE7 I seem to be having some problem with the event assembler itself. I can get the offset for a chapter's events and disassemble it successfully into an empty txt, it all looks good in there, but then i assemble it and i get errors such as missing labels. It seems like certain chapters are being disassembled incorrectly? Does anyone else have this problem and/or know of a fix?

Don't reassemble it like that. Chances are that you are gonna overwrite something. It probably stopped at a certain line because your thing was about to overwrite something else. Use an empty space and repoint it there with:

EventPointerTable(ChapterHex,ThisChapter)
Edited by Morva
Link to comment
Share on other sites

Morva, There is no call to the opening event anywhere in your events.

Make sure you've got a turn event that calls the opening on turn 1.

Also, you really should have ENUN after every LOU1. ENUN makes the game wait until all units have been loaded properly.

Not sure why you've got these pointers here:

POIN BadReinforcements BadReinforcements BadReinforcements BadReinforcements
POIN GoodReinforcements GoodReinforcements GoodReinforcements GoodReinforcements

The game likely doesn't know what to do with these, and they aren't in the template. I would remove them.

Edited by Primefusion
Link to comment
Share on other sites

Morva, There is no call to the opening event anywhere in your events.

Make sure you've got a turn event that calls the opening on turn 1.

Also, you really should have ENUN after every LOU1. ENUN makes the game wait until all units have been loaded properly.

Not sure why you've got these pointers here:

POIN BadReinforcements BadReinforcements BadReinforcements BadReinforcements
POIN GoodReinforcements GoodReinforcements GoodReinforcements GoodReinforcements

The game likely doesn't know what to do with these, and they aren't in the template. I would remove them.

Ok I'll trying removing those POINS. Also, the one I posted was an old version. I made a call to an opening event, but still no luck.

Edit: Deleted the POINs and added the ENUNs. Still not working. New file: http://pastebin.com/PC2HPQ1W

Edited by Morva
Link to comment
Share on other sites

Don't reassemble it like that. Chances are that you are gonna overwrite something. It probably stopped at a certain line because your thing was about to overwrite something else. Use an empty space and repoint it there with:

EventPointerTable(ChapterHex,ThisChapter)

I make sure to select 'whole chapter' and have the offset right, is there more I should be doing when disassembling? It isn't that the labels aren't being recognized when i try to assemble them back in, they just aren't in the .txt at all after i've disassembled it from a fresh ROM.

Link to comment
Share on other sites

I make sure to select 'whole chapter' and have the offset right, is there more I should be doing when disassembling? It isn't that the labels aren't being recognized when i try to assemble them back in, they just aren't in the .txt at all after i've disassembled it from a fresh ROM.

I mean don't reassemble it back in. Take what you need, and then make your own EA file. Otherwise, if your file happens to be longer, it won't work because it will be overwriting another offset. Feel free to disassemble, but from what I know, reassembling it back in isn't the best option because it will either overwrite something or cause a ton of errors (to prevent overwriting). So repoint it to an entirely new offset with a different file. I hope I'm making sense.

Link to comment
Share on other sites

I mean don't reassemble it back in. Take what you need, and then make your own EA file. Otherwise, if your file happens to be longer, it won't work because it will be overwriting another offset. Feel free to disassemble, but from what I know, reassembling it back in isn't the best option because it will either overwrite something or cause a ton of errors (to prevent overwriting). So repoint it to an entirely new offset with a different file. I hope I'm making sense.

I'm not making fully custom levels yet, currently i'm just replacing classes/items with other ones. Even so, I get these errors if I don't change a thing. I appreciate the advice too, but it's also overlooking my original problem - I'm having issues with disassembling, not assembling. The file it outputs seems to just be missing things, or has things like labels that don't point anywhere.

Link to comment
Share on other sites

Ok I'll trying removing those POINS. Also, the one I posted was an old version. I made a call to an opening event, but still no luck.

Edit: Deleted the POINs and added the ENUNs. Still not working. New file: http://pastebin.com/PC2HPQ1W

I'm able to assemble this on a fresh ROM and have it run just fine. Are you sure you're not accidentally overwriting something on your end?

Link to comment
Share on other sites

I'm able to assemble this on a fresh ROM and have it run just fine. Are you sure you're not accidentally overwriting something on your end?

Wait, really? That's very strange... I guess I should use my backup and then put the new code back in and see what happens.

Edit: Huh, it worked. Guess I'm really bad at not overwriting stuff. Good thing I keep backups (learned from my last black screen experience). Thanks for all the help Primefusion :D.

Edit 2: Figured out why I keep failing. Whenever I overwrite my old Event Assembler file, I leave some of the hex code there and then they mix (I probably don't make sense, but basically my two files are mixing). I'm able to fix that by deleting the offsets where my EA file is before I put in a new one. That was able to fix it.

Edited by Morva
Link to comment
Share on other sites

Also, apparently changing the Event Assembler doesn't delete the tutorials. I've seen the tutorial killer patch, but my ROM isn't clean so I can't patch it. Is there a simple way to disable the tutorials or do I have to start all over again and patch back the stuff I made?

Edited by Morva
Link to comment
Share on other sites

I'm not making fully custom levels yet, currently i'm just replacing classes/items with other ones. Even so, I get these errors if I don't change a thing. I appreciate the advice too, but it's also overlooking my original problem - I'm having issues with disassembling, not assembling. The file it outputs seems to just be missing things, or has things like labels that don't point anywhere.

The reason it has dumb names like "label28" and such is because the EA doesn't know what else to call it. So it just assigns it a number and adds label to it. The labels are stuff like the units, events, etc. For example:

LOU1 label28

label28:
UNIT Batta Brigand 0x00 Level(10,Enemy,False) [12,09] [12,09] [IronAxe,0x00,0x00,0x00] [0x00,0x03,0x00,0x20]
UNIT

So yea, these labels point to the stuff in the program. If you know programming, I guess you could think of it as a method (sort of). Its because the AI doesn't know what you would want to call Batta and pals (its basically just reading hex), so it just spews "labelX". Hope that answered your question. You can name it whatever you want, just remember to change all the references.

Edited by Morva
Link to comment
Share on other sites

Also, apparently changing the Event Assembler doesn't delete the tutorials. I've seen the tutorial killer patch, but my ROM isn't clean so I can't patch it. Is there a simple way to disable the tutorials or do I have to start all over again and patch back the stuff I made?

Just put #define DISABLE_TUTORIALS in your events and assemble. Only need to do it once, and it'll wipe out the tutorial pointers and such.

Link to comment
Share on other sites

Just put #define DISABLE_TUTORIALS in your events and assemble. Only need to do it once, and it'll wipe out the tutorial pointers and such.

I have that in my event file, but for some reason every now and then it still shows up. I think I'll just clear them out in FEditor Adv (the text is the only one that keeps going, but fortunately it doesn't still force cursor or anything).

Edited by Morva
Link to comment
Share on other sites

The reason it has dumb names like "label28" and such is because the EA doesn't know what else to call it. So it just assigns it a number and adds label to it. The labels are stuff like the units, events, etc. For example:

LOU1 label28

label28:
UNIT Batta Brigand 0x00 Level(10,Enemy,False) [12,09] [12,09] [IronAxe,0x00,0x00,0x00] [0x00,0x03,0x00,0x20]
UNIT

So yea, these labels point to the stuff in the program. If you know programming, I guess you could think of it as a method (sort of). Its because the AI doesn't know what you would want to call Batta and pals (its basically just reading hex), so it just spews "labelX". Hope that answered your question. You can name it whatever you want, just remember to change all the references.

I'm not complaining about the name. I understand what the label is and does. The problem is that the labels (and possibly other lines i'm just not seeing) aren't outputting properly. I deassemble a chapter's code and there will be lines like "LOU1 label24" but then there is no label24 in the txt file and the EA points this out if I try to assemble it.

Let me go step-by-step to make my problem clear:

1. I choose a chapter in FE7 and find the offset for its events using nightmare.

2. I open EA, choose my rom, choose an empty text file, type in the offset, select 'whole chapter' and disassemble. No errors.

3. I read the txt file and notice that there are lines that try to call labels that don't exist, such as a line "LOU1 label24" when there is no label24.

4. I try to assemble the txt, without modifying it, back into the game. I get an error saying that label24 is called but doesn't exist. This happens regardless of the offset I assemble it at.

That's my problem. Are the dissassembled txts of chapters inherently bugged or something?

EDIT: I should note this doesn't happen for every chapter. An example of a chapter it happens in is Pirate Ship (Eliwood ch17).

Edited by Bliz
Link to comment
Share on other sites

I'm not complaining about the name. I understand what the label is and does. The problem is that the labels (and possibly other lines i'm just not seeing) aren't outputting properly. I deassemble a chapter's code and there will be lines like "LOU1 label24" but then there is no label24 in the txt file and the EA points this out if I try to assemble it.

Let me go step-by-step to make my problem clear:

1. I choose a chapter in FE7 and find the offset for its events using nightmare.

2. I open EA, choose my rom, choose an empty text file, type in the offset, select 'whole chapter' and disassemble. No errors.

3. I read the txt file and notice that there are lines that try to call labels that don't exist, such as a line "LOU1 label24" when there is no label24.

4. I try to assemble the txt, without modifying it, back into the game. I get an error saying that label24 is called but doesn't exist. This happens regardless of the offset I assemble it at.

Which module are you using to get the event offset? I used the Event Table References module, disassembled the pirates ship events, and then re-assembled them with no issues.

Are you using an up-to-date version of EA? There's a new version on FEU, though v9.10 is probably still in common use (It's what I use).

Link to comment
Share on other sites

for what it's worth labels (both the EA-generated ones and the ones you put in your own code) and the sections they denote are absolutely not the same thing as methods/functions

they are essentially the same thing as writing "line 24" or whatever instead; neither EA nor the game itself make any special notice of what labels you put into your code

Edited by CT075
Link to comment
Share on other sites

One more question and I think I'll be set for the next few chapters (hopefully). Is there by any chance an event that gets triggered once a village gets destroyed? My guess if there is any is that its a Misc event or a Location event.​

Edit: Perhaps I could use an area event (like in the desert), but I'm not sure how I can check if its a bandit who stepped on it or not.

AREA 0x00 VillageBreak 12 02
Edited by Morva
Link to comment
Share on other sites

Which module are you using to get the event offset? I used the Event Table References module, disassembled the pirates ship events, and then re-assembled them with no issues.

Are you using an up-to-date version of EA? There's a new version on FEU, though v9.10 is probably still in common use (It's what I use).

I wasn't using the most up-to-date version, and updating solved my problem. Silly me, thanks very much.

Link to comment
Share on other sites

One more question and I think I'll be set for the next few chapters (hopefully). Is there by any chance an event that gets triggered once a village gets destroyed? My guess if there is any is that its a Misc event or a Location event.​

Edit: Perhaps I could use an area event (like in the desert), but I'm not sure how I can check if its a bandit who stepped on it or not.

AREA 0x00 VillageBreak 12 02

I don't recall there being any way to trigger a scene after a village is destroyed.

If you want to use the AREA idea, you could have a conditional check for whether or not it's the player's phase. If it's not the player's phase then an enemy or npc triggered the event.

IFAF 0x1 0x7A2F1
// Not the player's phase, do something
ELSE id
ENIF id
   ENUF someID // you'll want to reset the event if a player triggered it
ENIF id
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...