Jump to content

Event Assembler Questions Thread


CT075
 Share

Recommended Posts

Can you explain the perimeters of CALL?

This is straight from the doc, "Event Assembler Language.txt", which you can find in Event Assembler's root directory:

Event execution manipulation
 FE8:
  CALL *Event pointer*
 FE7:
  CALL *Event pointer*

  Makes event execution move to offset,
  then return back after executing the event.

  Parameters:
   Event pointer = Event to execute.

So if you do CALL <label>, then the label will be executed, and then execution will return back to whatever comes immediately after CALL. You could likely use a raw offset too, instead of a label. But, then you would have to know exactly where the events you're calling are stored in the ROM.

Link to comment
Share on other sites

  • Replies 3.3k
  • Created
  • Last Reply

Top Posters In This Topic

That would depend on what your interpretation of a pointer is.

The game knows to read in the label/offset when executing CALL because it's a function with a single parameter. That's how it was coded to work.

Link to comment
Share on other sites

#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 Good Good Good Good

POIN Opening_event Ending_event

POIN Bad Bad Bad Bad


Good:

UNIT 0x2D 0x23 0x00 Level(1, Ally, 0) [27,27] [27,27] [0x39, 0x57] NoAI

UNIT 0x01 0x1E 0x00 Level(1, Ally, 0) [27,28] [27,28] [0x3E, 0x4A] NoAI

UNIT 0x02 0x26 0x00 Level(1, Ally, 0) [27,29] [27,29] [0x46, 0x58] NoAI

UNIT 0x10 0x1C 0x00 Level(10, Ally, 0) [28,27] [28,27] [0x42, 0x3E] NoAI

UNIT 0x13 0x20 0x00 Level(10, Ally, 0) [28,28] [28,28] [0x3B, 0x37] NoAI

UNIT 0x16 0x24 0x00 Level(10, Ally, 0) [28,29] [28,29] [0x45, 0x44] NoAI

UNIT 0x11 0x2D 0x00 Level(1, Ally, 0) [26,27] [26,27] [0x3E, 0x4C] NoAI

UNIT 0x1B 0x2D 0x00 Level(1, Ally, 0) [26,29] [26,29] [0x37, 0x4C] NoAI

UNIT 0x03 0x15 0x0A Level(1, Ally, 0) [26,28] [26,28] [0x1D, 0x68] NoAI

UNIT


Bad:

UNIT


Reinforcements:

UNIT 0x67 0x12 0x00 Level(10, Enemy, 0) [21,28] [21,28] [0x20] PursueWithoutHeed

UNIT


Shadows1:

UNIT 0x52 0x3E 0x00 Level(20, Enemy, 0) [1,28] [1,28] [0x0D] PursueWithoutHeed

UNIT


CALL LoadShadows


LoadShadows:

IFET 0x01 0x08

LOU1 Shadows1

ENUN

ELSE 0x02

ENIF 0x01

ENUF 0x24

ENIF 0x02

AFEV


Turn_events:

TurnEventPlayer(0x0,Opening_event,1)

TURN 0 Mendel [1,30] 0x8 0x00

End_MAIN


Character_events:

End_MAIN


Location_events:

CHES 0x08 0x6A [21,28] 0x12

End_MAIN


TileChanges:

TileMap(0x0F,11,6,0x01,0x01,ChestOpened)

TileMapEnd


ChestOpened:

BYTE 0x04 0x00

ALIGN 4

End_MAIN


Misc_events:

CauseGameOverIfLordDies

AFEV


Mendel:

IFET 0x01 0x08

LOU1 Reinforcements

ENUN

ELSE 0x02

ENIF 0x01

ENUF 0x24

ENIF 0x02

End_MAIN


TrapData:

End_MAIN


Opening_event:

OOBB

LOU1 Good

ENUN

ENDA


Ending_event:

ENDA


// Events


// Manual Movement


// Scripted Fights


// Units


// Shop Data


MESSAGE Events end at offset currentOffset


Somewhere along the lines I'm doing something wrong.I also put it in the Turn event section because you said it'd return to what comes after it,but that results in a black screen.I tried with and w/o an AFEV.I don't know what I'm doing wrong now.

Link to comment
Share on other sites

why don't you try

Misc_events:
AFEV 0x6 LoadShadows 0x24
CauseGameOverIfLordDies
AFEV

// ...

LoadShadows:
LOU1 Shadows1
ENUN
ELSE 0x02
ENUF 0x24
ENDA

Some homework for you: Explain to me what a label is, why we use them, and how event triggers work.

Edited by CT075
Link to comment
Share on other sites

So what my understanding of those things gained from my conversations from you and a few tutorials I looked at,labels are used to bring light to pieces of the "script"(or coding) so they are performed by the program. Almost everything in the coding is under a label,except the pointers themselves;they're understood because they consist of a single parameter,hence they're among the only ones in the original script not under a label for they define the main 8 labels(them,along with the #define and ORG,and eventpointertable codes).I started realizing this was so after our reinforcement conversation,but I didn't know single parameter thing until recently.Labels are essentially required to code many things.

Event triggers are the ones that actually tell the program to actually perform said instructed task.Event and Condition IDs that are written are only recognized with the labels;the program needs these triggers to actually use the offsets to do said task.

Lastly,I ried doing that,but it didn't work.

Link to comment
Share on other sites

well, your point about labels are almost right

a label just is a name for a "place" in your script; consider it a line number, if you will. To tell the code what to do when X happens, it just uses the various trigger arrays (TURN, etc) to find out which line number to go to. We use labels because that's easier than using 0x804134D8 (a pointer) or whatever else it ends up being. the POIN table is just that - it's a list of pointers (or labels). You don't mess with that because those are predetermined - the fourth label is the list of miscellaneous (per action) triggers, the seventh is the list of units that determines how many units you get to deploy that map, etc. Writing random code into the middle of nowhere without a label on top will work, strictly speaking, but it isn't recommended because it just makes things generally harder and more annoying to code

Now, back to your problem - what exactly are you trying to do? From glancing over the script, it looks like you want the enemies to spawn immediately after the chest is opened (i got the trigger ID wrong but you can fix that yourself, it's just "AFEV 0x[whatever] label 0x8" instead of "[whatever] 0x24"), otherwise... do what? When exactly do you want it to be checking whether the chest has been opened?

Link to comment
Share on other sites

Yes,I do want it to happen immediately.Your solution now works;I thank you greatly.But for the sake of clearing things up,I thought AFEV was a parrallel of ENDA,where it tells the program to stop coding other events and give the players their turn.The way you used it seem to imply that it doesn't work that way;they are clearly different in function,or atleast,how they perform it.Can you explain this?

Link to comment
Share on other sites

the mainstream tutorials don't explain this very well (i'm in the process of writing my own, for the record)

The groups of code like "Turn_events" or "Misc_events" are event trigger arrays. They aren't actual event code, per se, and more lists of "when X happens, go to Y pointer and perform the events located there". For example, "TURN 0x0 TurnFourEvents [4,4]" tells the game that, on every turn between turns 4 and 4 (the [4,4], which really means "just do this on turn 4"), go to the code labeled "TurnFourEvents" and do the stuff there.

The thing is, the game has no way of knowing how many TURNs (or AFEVs, or CHESs, etc) there are in advance. For Misc_events, for example, every time a unit ends its turn, it just starts checking every single condition in there. Without knowing the end, it would theoretically check forever (because they're all numbers to the computer). We don't want this, so to signal that "hey, there's no more triggers here", we put a terminator. Generally, this is the purpose of END_MAIN. However, you can accomplish the same effect by just putting a blank trigger with no actual data (hence the empty TURN or empty AFEV, etc at the end of a lot of the old templates).

The function of the terminator is completely different from that of ENDA, which honestly has no synonym (the closest would be ENDB, which also does something completely different). ENDA tells the game to stop performing events and return control to the player, like you thought. The blank AFEV (or END_MAIN, or any of the other ones) does not mean the same thing, because the places in the code where you'd put them are never meant to be performed. As a rule of thumb, if the game is doing something obvious (loading units, playing music, showing text), you'll want to end it with ENDA. Otherwise use END_MAIN (or a blank trigger - AFEV/TURN/CHAR/LOCA)

Edited by CT075
Link to comment
Share on other sites

Thanks that helps clear up alot of things--A major point of learning as an FE hacker :))))).Sorry to ask this so sudden,but there's another problem I can't seem to resolve:

#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 Good Good Good Good
POIN Opening_event Ending_event
POIN Bad Bad Bad Bad
Good:
UNIT 0x2D 0x23 0x00 Level(1, Ally, 0) [27,27] [27,27] [0x39, 0x57] NoAI
UNIT 0x01 0x1E 0x00 Level(1, Ally, 0) [27,28] [27,28] [0x3E, 0x4A] NoAI
UNIT 0x02 0x26 0x00 Level(1, Ally, 0) [27,29] [27,29] [0x46, 0x58] NoAI
UNIT 0x10 0x1C 0x00 Level(10, Ally, 0) [28,27] [28,27] [0x42, 0x3E] NoAI
UNIT 0x13 0x20 0x00 Level(10, Ally, 0) [28,28] [28,28] [0x3B, 0x37] NoAI
UNIT 0x16 0x24 0x00 Level(10, Ally, 0) [28,29] [28,29] [0x45, 0x44] NoAI
UNIT 0x11 0x2D 0x00 Level(1, Ally, 0) [26,27] [26,27] [0x3E, 0x4C] NoAI
UNIT 0x1B 0x2D 0x00 Level(1, Ally, 0) [26,29] [26,29] [0x37, 0x4C, 0x68, 0x69] NoAI
UNIT 0x03 0x15 0x0A Level(1, Ally, 0) [26,28] [26,28] [0x1D, 0x68] NoAI
UNIT
Bad:
UNIT
Reinforcements:
UNIT 0x67 0x12 0x00 Level(10, Enemy, 0) [21,28] [21,28] [0x20] PursueWithoutHeed
UNIT
Shadows1:
UNIT 0x52 0x3E 0x00 Level(20, Enemy, 0) [29,28] [29,27] [0x0C] PursueWithoutHeed
UNIT 0x52 0x3E 0x00 Level(20, Enemy, 0) [29,28] [29,28] [0x0C] PursueWithoutHeed
UNIT 0x52 0x3E 0x00 Level(20, Enemy, 0) [29,28] [29,29] [0x0C] PursueWithoutHeed
UNIT
LoadShadows:
LOU1 Shadows1
ENUN
ELSE 0x02
ENUF 0x24
ENDA
Turn_events:
TurnEventPlayer(0x0,Opening_event,1)
TURN 0 Mendel [1,30] 0x0 0x00
TURN 0 Miracle [1,30] 0x0 0x00
TURN 0 Mystic [1,30] 0x8 0x00
End_MAIN
Character_events:
End_MAIN
Location_events:
CHES 0x08 0x6A [21,28] 0x12
Door(21,26)
End_MAIN
TileChanges:
TileMap(0x00,0x1B,0x22,0x01,0x01,ChestOpened)
TileMap(0x01,0x1B,0x20,0x01,0x01,FirstDoorOpened)
TileMapEnd
ChestOpened:
BYTE 0x04 0x00
ALIGN 4
End_MAIN
FirstDoorOpened:
BYTE 0x40 0x2C
ALIGN 4
End_MAIN
Misc_events:
AFEV 0x06 LoadShadows 0x08
CauseGameOverIfLordDies
AFEV
Mendel:
IFET 0x01 0x08
LOU1 Reinforcements
ENUN
ENIF 0x01
ELSE 0x02
ENIF 0x02
ENUF 0x24
End_MAIN
Miracle:
IFAT 0x07 0x7A2F1
TurnNPC(0x52)
ENIF 0x01
ELSE 0x02
ENIF 0x02
ENUF 0x24
End_MAIN
Mystic:
IFAF 0x07 0x7A2F1
TurnEnemy(0x52)
ENIF 0x01
ELSE 0x02
ENIF 0x02
ENUF 0x24
End_MAIN
TrapData:
End_MAIN
Opening_event:
OOBB
LOU1 Good
ENUN
ENDA
Ending_event:
ENDA
// Events
// Manual Movement
// Scripted Fights
// Units
// Shop Data
MESSAGE Events end at offset currentOffset
I have no problems w/ miracle and mystic BTW.I'm scrutinizing a video tutorial about tilechanges for my horizontal door.The problem is,while the location event is happening,the actual tile change isn't happening.That ALIGN 4 is just to realign properly the script.I looked at the parameters and can't find what i'm missing for it.
Link to comment
Share on other sites

None of my Area events seem to be working.

// Made by markyjoe1990 of Youtube
// Modified by Nintenlord and further by Camtech
#define DISABLE_TUTORIALS
#include EAstdlib.event
#define MAP_OFFS 0xDA0000
// Write a pointer to the map for you so you don't have to do it yourself
EventPointerTable(0x04,MAP_OFFS)
EventPointerTable(0x06,Chapter)
//EventPointerTable(0x06,Pointers)
ORG 0xD80000
Chapter:
POIN TurnEvents
POIN CharacterEvents
POIN LocationEvents
POIN MiscEvents
POIN BallistaData BallistaData
POIN Bad Bad Bad Bad
POIN Good Good Good Good
POIN Opening_event Ending_event
Bad:
//UNIT
Good:
UNIT Eliwood 0x01 0x00 Level(1,Ally,False) [26,25] [26,25] [ironSword] [0x00,0x00,0x00,0x00]
UNIT Oswin 0x14 0x01 Level(3,Ally,False) [26,25] [25,26] [0x1E,0x6B] [0x00,0x00,0x00,0x00]
UNIT 0x31 0x32 0x01 Level(2,Ally,False) [26,25] [27,26] [0x15,0x6B] [0x00,0x00,0x00,0x00] //Florina
UNIT
Boss:
UNIT Nergal 0x42 0x00 Level(20,Enemy,False) [3,3] [3,3] [0x27] [0x00,0x03,0x00,0x20]
UNIT
GateKeeper:
UNIT Paul 0x16 0x44 Level(10,Enemy,False) [10,10] [10,10] [0x1A,Elixir] [0x00,0x03,0x00,0x20]
UNIT
Angry:
UNIT Jasmine 0x3B 0x44 Level(20,Enemy,False) [22,24] [22,24] [0x23] [0x00,0x03,0x09,0x00]
UNIT
Woods:
UNIT Wil 0x1A 0x01 Level(20,Ally,False) [29,27] [29,29] [0x31] [0x00,0x00,0x00,0x00]
UNIT
TrollChest:
UNIT Wallace 0x0A 0x2C Level(10,Enemy,False) [1,28] [1,28] [0x06,0x70] [0x00,0x03,0x00,0x20]
UNIT
Generics1:
UNIT 0xA7 0x3A 0x44 Level(5,Enemy,True) [1,23] [6,24] [0x1F,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(5,Enemy,True) [1,23] [7,25] [0x1F,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(5,Enemy,True) [1,23] [3,26] [0x1F,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(5,Enemy,True) [1,23] [7,22] [0x1F,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(5,Enemy,True) [1,23] [4,25] [0x1F,0x6C] [0x00,0x03,0x09,0x00]
UNIT
Generics2:
UNIT 0xA7 0x3A 0x44 Level(8,Enemy,True) [22,4] [22,4] [0x20,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(8,Enemy,True) [21,6] [21,6] [0x20,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(8,Enemy,True) [23,7] [23,7] [0x20,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(8,Enemy,True) [20,8] [20,8] [0x20,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(8,Enemy,True) [22,7] [22,7] [0x20,0x6C] [0x00,0x03,0x09,0x00]
UNIT
Generics3:
UNIT 0xA7 0x3A 0x44 Level(13,Enemy,True) [3,3] [1,5] [0x22,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(13,Enemy,True) [3,3] [5,4] [0x22,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(13,Enemy,True) [3,3] [2,4] [0x22,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(13,Enemy,True) [3,3] [3,5] [0x22,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(13,Enemy,True) [3,3] [8,4] [0x22,0x6C] [0x00,0x03,0x09,0x00]
UNIT
Seige:
UNIT 0xA7 0x3A 0x22 Level(20,Enemy,True) [15,2] [15,2] [0x3A] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x22 Level(20,Enemy,True) [12,5] [12,5] [0x3A] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x22 Level(20,Enemy,True) [7,9] [7,9] [0x3A] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x22 Level(20,Enemy,True) [2,14] [2,14] [0x3A] [0x00,0x03,0x09,0x00]
UNIT
TurnEvents:
// Comment out or remove this line if you have a prep screen.
TURN 0x00 Opening_event [01,00] 0x0 0x00
TURN
CharacterEvents:
//CHAR
END_MAIN
LocationEvents:
Village(0x08,Village1,26,18)
//House(0x07,ArenaTrap,29,14)
Village(0x0A,Ruins,27,0)
Vendor(BuyStuff,26,29)
House(0x0B,Mad,23,24)
House(0x0C,Money,21,29)
//House(0x0D, ,29,20) need event idea
House(0x0E,WoodedTroll,29,26)
House(0x0F,Lose,15,26)
House(0x10,MasterSeal,14,0)
//Chest(item,X,Y)
//AREA eventID SceneLabel [startX,StartY] [EndX,EndY]
AREA 0x17 UberSword [14,18] [14,18]
AREA 0x18 StopSiege [12,20] [12,20]
AREA 0x00 GG1 [12,14] [19,17]
AREA 0x00 GG2 [20,15] [20,18]
AREA 0x00 GG3 [10,15] [11,22]
AREA 0x00 GG4 [12,18] [13,19]
AREA 0x00 GG5 [15,18] [19,19]
AREA 0x00 GG6 [12,21] [15,24]
AREA 0x00 GG7 [16,20] [18,22]
AREA 0x00 GG8 [14,19] [14,19]
AREA 0x00 GG9 [11,23] [11,23]
AREA 0x00 GG10 [16,23] [16,23]
//LOCA
END_MAIN
MiscEvents:
CauseGameOverIfLordDies
//AFEV
END_MAIN
Opening_event:
// Change to ENDB if you have prep screen.
OOBB
FADI 10
BACG 0x02
FADU 10
TEX1 0x0811
REMA
LOU1 Good
LOU1 Boss
LOU1 GateKeeper
LOU1 Generics1
LOU1 Generics2
LOU1 Generics3
LOU1 TrollChest
LOU1 Seige
ENUN
OOBB
ENDA
//Location Events Start
Village1:
FADI 10
BACG 0x02
FADU 10
TEX1 0x0810
REMA
//give item?
ENDA
Ruins:
FADI 10
BACG 0x02
FADU 10
TEX1 0x0813
REMA
//give item?
ENDA
//ArenaTrap:
//TEX1 0x0812
//REMA
//GameOver
Mad:
FADI 10
BACG 0x02
FADU 10
TEX1 0x0814
REMA
LOU1 Angry
ENUN
ENDA
MasterSeal:
FADI 10
BACG 0x02
FADU 10
TEX1 0x0816
REMA
ITGV 0x8A
ENDA
Money:
FADI 10
BACG 0x02
FADU 10
TEX1 0x0817
REMA
ITGV 0x98
ENDA
Lose:
GameOver
WoodedTroll:
FADI 10
BACG 0x02
FADU 10
TEX1 0x0818
REMA
LOU1 Woods
ENUN
ENDA
UberSword:
ITGV 0x84
StopSiege:
WarpOut(15,2)
WarpOut(12,5)
WarpOut(7,9)
WarpOut(2,14)
GG1:
GameOver
GG2:
GameOver
GG3:
GameOver
GG4:
GameOver
GG5:
GameOver
GG6:
GameOver
GG7:
GameOver
GG8:
GameOver
GG9:
GameOver
GG10:
GameOver
//Shop
BuyStuff:
SHLI 0x1E 0x14 0x15 0x16 0x6B 0x6C
Ending_event:
//MNCH 0x__
//STAL 1
//_0x1
//ENDA
//UnitClear
//LOMA 0x01 [X,Y]
BallistaData:
BLST
MESSAGE Events end at offset currentOffset
MESSAGE The map for this chapter is at offset MAP_OFFS

Link to comment
Share on other sites

Oh thats odd. Thank you.

Also does anyone know how to fix the error that causes custom text to overlap?

Edit: It fixed most of the events but now my two events 0x17 and 0x18 do their desired affect then play a bunch(more than 4) of the warp animations around the screen and then cause a game over.

Also only my first village event is working.

Edited by Shamison
Link to comment
Share on other sites

LocationBasedEvents and MiscBasedEvents are such bad names why do people still use them

they're more like VisitorBasedEvents (in which you use a command that isn't "talk" on a certain square) and MovementBasedEvents (in which they're checked every time a unit ends its turn)

Link to comment
Share on other sites

  • 2 weeks later...
// Made by markyjoe1990 of Youtube
// Modified by Nintenlord and further by Camtech
#define DISABLE_TUTORIALS
#include EAstdlib.event
#define MAP_OFFS 0xDA0000
// Write a pointer to the map for you so you don't have to do it yourself
EventPointerTable(0x04,MAP_OFFS)
EventPointerTable(0x06,Chapter)
//EventPointerTable(0x06,Pointers)
ORG 0xD80000
Chapter:
POIN TurnEvents
POIN CharacterEvents
POIN LocationEvents
POIN MiscEvents
POIN BallistaData BallistaData
POIN Bad Bad Bad Bad
POIN Good Good Good Good
POIN Opening_event Ending_event
Bad:
//UNIT
Good:
UNIT Eliwood 0x01 0x00 Level(1,Ally,False) [26,25] [26,25] [ironSword] [0x00,0x00,0x00,0x00]
UNIT Oswin 0x14 0x01 Level(3,Ally,False) [26,25] [25,26] [0x1E,0x6B] [0x00,0x00,0x00,0x00]
UNIT 0x31 0x32 0x01 Level(2,Ally,False) [26,25] [27,26] [0x15,0x6B] [0x00,0x00,0x00,0x00] //Florina
UNIT
Boss:
UNIT Nergal 0x42 0x00 Level(20,Enemy,False) [3,3] [3,3] [0x27] [0x00,0x03,0x00,0x20]
UNIT
GateKeeper:
UNIT Paul 0x16 0x44 Level(10,Enemy,False) [10,10] [10,10] [0x1A,Elixir] [0x00,0x03,0x00,0x20]
UNIT
Angry:
UNIT Jasmine 0x3B 0x44 Level(20,Enemy,False) [22,24] [22,24] [0x23] [0x00,0x03,0x09,0x00]
UNIT
Woods:
UNIT Wil 0x1A 0x01 Level(20,Ally,False) [29,27] [29,29] [0x31] [0x00,0x00,0x00,0x00]
UNIT
TrollChest:
UNIT Wallace 0x0A 0x2C Level(10,Enemy,False) [1,28] [1,28] [0x06,0x70] [0x00,0x03,0x00,0x20]
UNIT
Generics1:
UNIT 0xA7 0x3A 0x44 Level(5,Enemy,True) [1,23] [6,24] [0x1F,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(5,Enemy,True) [1,23] [7,25] [0x1F,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(5,Enemy,True) [1,23] [3,26] [0x1F,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(5,Enemy,True) [1,23] [7,22] [0x1F,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(5,Enemy,True) [1,23] [4,25] [0x1F,0x6C] [0x00,0x03,0x09,0x00]
UNIT
Generics2:
UNIT 0xA7 0x3A 0x44 Level(8,Enemy,True) [22,4] [22,4] [0x20,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(8,Enemy,True) [21,6] [21,6] [0x20,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(8,Enemy,True) [23,7] [23,7] [0x20,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(8,Enemy,True) [20,8] [20,8] [0x20,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(8,Enemy,True) [22,7] [22,7] [0x20,0x6C] [0x00,0x03,0x09,0x00]
UNIT
Generics3:
UNIT 0xA7 0x3A 0x44 Level(13,Enemy,True) [3,3] [1,5] [0x22,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(13,Enemy,True) [3,3] [5,4] [0x22,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(13,Enemy,True) [3,3] [2,4] [0x22,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(13,Enemy,True) [3,3] [3,5] [0x22,0x6C] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x3A 0x44 Level(13,Enemy,True) [3,3] [8,4] [0x22,0x6C] [0x00,0x03,0x09,0x00]
UNIT
Seige:
UNIT 0xA7 0x22 0x22 Level(20,Enemy,True) [15,2] [15,2] [0x3A] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x22 0x22 Level(20,Enemy,True) [12,5] [12,5] [0x3A] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x22 0x22 Level(20,Enemy,True) [7,9] [7,9] [0x3A] [0x00,0x03,0x09,0x00]
UNIT 0xA7 0x22 0x22 Level(20,Enemy,True) [2,14] [2,14] [0x3A] [0x00,0x03,0x09,0x00]
UNIT
Drunkards:
UNIT 0x75 0x39 0x22 Level(5,Enemy,True) [18,26] [17,27] [0x21] [0x00,0x03,0x09,0x00]
UNIT 0x75 0x39 0x22 Level(5,Enemy,True) [18,26] [17,28] [0x21] [0x00,0x03,0x09,0x00]
UNIT 0x75 0x39 0x22 Level(5,Enemy,True) [18,26] [19,27] [0x21] [0x00,0x03,0x09,0x00]
UNIT 0x75 0x39 0x22 Level(5,Enemy,True) [18,26] [19,28] [0x21] [0x00,0x03,0x09,0x00]
UNIT 0x75 0x39 0x22 Level(5,Enemy,True) [18,26] [19,29] [0x21] [0x00,0x03,0x09,0x00]
UNIT 0x75 0x39 0x22 Level(5,Enemy,True) [18,26] [17,29] [0x21] [0x00,0x03,0x09,0x00]
UNIT
TurnEvents:
// Comment out or remove this line if you have a prep screen.
TURN 0x00 Opening_event [01,00] 0x0 0x00
//TURN 0x00 Turn4 [04,00] 0x0 0x00
//TURN
CharacterEvents:
//CHAR
CharacterEventBothWays(0x30,Advance,Eliwood,Nergal)
END_MAIN
LocationEvents:
Village(0x08,Village1,26,18)
Village(0x20,Village2,18,26)
//House(0x07,ArenaTrap,29,14)
Village(0x0A,Ruins,27,0)
Vendor(BuyStuff,26,29)
House(0x0B,Mad,23,24)
House(0x0C,Money,21,29)
House(0x0D,RAIN,29,20)
House(0x0E,WoodedTroll,29,26)
House(0x0F,Lose,15,26)
House(0x10,MasterSeal,14,0)
//Chest(item,X,Y)
//LOCA
END_MAIN
MiscEvents:
CauseGameOverIfLordDies
//AREA eventID SceneLabel [startX,StartY] [EndX,EndY]
AREA 0x17 UberSword [14,18] [14,18]
AREA 0x18 StopSiege [12,20] [12,20]
AREA 0x00 GG1 [12,14] [19,17]
AREA 0x00 GG2 [20,15] [20,18]
AREA 0x00 GG3 [10,15] [11,22]
AREA 0x00 GG4 [12,18] [13,19]
AREA 0x00 GG5 [15,18] [19,19]
AREA 0x00 GG6 [12,21] [15,24]
AREA 0x00 GG7 [16,20] [18,22]
AREA 0x00 GG8 [14,19] [14,19]
AREA 0x00 GG9 [11,23] [11,23]
AREA 0x00 GG10 [16,23] [16,23]
//AFEV
END_MAIN
Opening_event:
// Change to ENDB if you have prep screen.
OOBB
FADI 10
BACG 0x02
FADU 10
TEX1 0x0811
REMA
LOU1 Good
LOU1 Boss
LOU1 GateKeeper
LOU1 Generics1
LOU1 Generics2
LOU1 Generics3
LOU1 TrollChest
LOU1 Seige
ENUN
OOBB
ENDA
//Location Events Start
Village1:
FADI 10
BACG 0x02
FADU 10
TEX1 0x0810
REMA
ITGV 0x87
ENDA
Village2:
FADI 10
BACG 0x02
FADU 10
TEX1 0x0820
REMA
LOU1 Drunkards
ENDA
Ruins:
FADI 10
BACG 0x02
FADU 10
TEX1 0x0813
REMA
ITGV 0x19
ENDA
RAIN:
FADI 10
BACG 0x02
FADU 10
TEX1 0x0824
REMA
WEA1 Rain
ENDA
//ArenaTrap:
//TEX1 0x0812
//REMA
//GameOver
Mad:
FADI 10
BACG 0x02
FADU 10
TEX1 0x0814
REMA
LOU1 Angry
ENUN
ENDA
MasterSeal:
FADI 10
BACG 0x02
FADU 10
TEX1 0x0816
REMA
ITGV 0x8A
ENDA
Money:
FADI 10
BACG 0x02
FADU 10
TEX1 0x0817
REMA
ITGV 0x98
ENDA
Lose:
GameOver
WoodedTroll:
FADI 10
BACG 0x02
FADU 10
TEX1 0x0818
REMA
LOU1 Woods
ENUN
ENDA
UberSword:
ITGV 0x84
StopSiege:
WarpOut(15,2)
WarpOut(12,5)
WarpOut(7,9)
WarpOut(2,14)
GG1:
GameOver
GG2:
GameOver
GG3:
GameOver
GG4:
GameOver
GG5:
GameOver
GG6:
GameOver
GG7:
GameOver
GG8:
GameOver
GG9:
GameOver
GG10:
GameOver
Advance:
TEX1 0x0822
REMA
//MoveToChapter(chapter)
//Shop
BuyStuff:
SHLI 0x1E 0x14 0x15 0x16 0x6B 0x6C
Ending_event:
//MNCH 0x__
//STAL 1
//_0x1
//ENDA
//UnitClear
//LOMA 0x01 [X,Y]
BallistaData:
BLST
MESSAGE Events end at offset currentOffset
MESSAGE The map for this chapter is at offset MAP_OFFS

My AREA events that point to "UberSword" and "Stop Seige" Dont do their intended purpose but the ones that cause a gameover do. Is there something wrong with what I set the event ID's to?
Also after I edited text with FEditor adv the text loads on top of itself rendering it illegible. I saved in FEditor before doing anything so I cant figure out the problem.
Link to comment
Share on other sites

always end with ENDA, even if it's a game over; you're missing a bunch (offhand Advance, all the GameOvers, UberSword and StopSiege are missing them)

you're missing END_MAIN at the end of your TurnEvents

stylistic thing - instead of having GG1, GG2, GG3, (etc) that all do the same thing, you can just do

AREA 0x00 GG [12,14] [19,17]
AREA 0x00 GG [20,15] [20,18]
AREA 0x00 GG [10,15] [11,22]
AREA 0x00 GG [12,18] [13,19]
AREA 0x00 GG [15,18] [19,19]
AREA 0x00 GG [12,21] [15,24]
AREA 0x00 GG [16,20] [18,22]
AREA 0x00 GG [14,19] [14,19]
AREA 0x00 GG [11,23] [11,23]
AREA 0x00 GG [16,23] [16,23]

// ...

GG:
GameOver
ENDA
Link to comment
Share on other sites

Oh I didnt realize I could reuse that. And I forgot about the ENDA Thanks!

Edit: I cant seem to find the code that advances to the next chapter without going through the save screen. I checked the documentation that comes with the assembler but it wasnt in there.

Edited by Shamison
Link to comment
Share on other sites

// Made by markyjoe1990 of Youtube
// Modified by Nintenlord and further by Camtech
#define DISABLE_TUTORIALS
#include EAstdlib.event
#define MAP_OFFS 0xDA03A0
// Write a pointer to the map for you so you don't have to do it yourself
EventPointerTable(0x0D,MAP_OFFS)
EventPointerTable(0x0F,Chapter)
ORG 0xD804F0
Chapter:
POIN TurnEvents
POIN CharacterEvents
POIN LocationEvents
POIN MiscEvents
POIN BallistaData BallistaData
POIN Bad Bad Bad Bad
POIN Good Good Good Good
POIN OpeningEvent EndingEvent
Bad:
UNIT Nergal 0x01 0x00 Level(10,Enemy,False) [6,2] [6,2] [0x07] [0x00,0x03,0x00,0x20]
UNIT 0x77 0x32 0x3A Level(9,Enemy,True) [6,2] [5,2] [0x14] [0x00,0x03,0x09,0x00]
UNIT 0x77 0x1E 0x3A Level(8,Enemy,True) [6,2] [4,2] [0x40] [0x00,0x03,0x09,0x00]
UNIT 0x77 0x1E 0x3A Level(8,Enemy,True) [6,2] [7,2] [0x40] [0x00,0x03,0x09,0x00]
UNIT 0x77 0x28 0x3A Level(7,Enemy,True) [6,2] [3,2] [0x14] [0x00,0x03,0x09,0x00]
UNIT 0x77 0x28 0x3A Level(7,Enemy,True) [6,2] [8,2] [0x14] [0x00,0x03,0x09,0x00]
UNIT 0x77 0x14 0x3A Level(6,Enemy,True) [6,2] [2,2] [0x14] [0x00,0x03,0x09,0x00]
UNIT 0x77 0x14 0x3A Level(6,Enemy,True) [6,2] [9,2] [0x14] [0x00,0x03,0x09,0x00]
Bad2:
UNIT 0x77 0x38 0x3A Level(5,Enemy,True) [6,2] [2,3] [0x14] PursueWithoutHeed
UNIT 0x77 0x38 0x3A Level(5,Enemy,True) [6,2] [3,3] [0x14] PursueWithoutHeed
UNIT 0x77 0x38 0x3A Level(5,Enemy,True) [6,2] [4,3] [0x14] PursueWithoutHeed
UNIT 0x77 0x38 0x3A Level(5,Enemy,True) [6,2] [5,3] [0x14] PursueWithoutHeed
UNIT 0x77 0x38 0x3A Level(5,Enemy,True) [6,2] [6,3] [0x14] PursueWithoutHeed
UNIT 0x77 0x38 0x3A Level(5,Enemy,True) [6,2] [7,3] [0x14] PursueWithoutHeed
UNIT 0x77 0x38 0x3A Level(5,Enemy,True) [6,2] [8,3] [0x14] PursueWithoutHeed
UNIT 0x77 0x38 0x3A Level(5,Enemy,True) [6,2] [9,3] [0x14] PursueWithoutHeed
UNIT
Good:
UNIT Eliwood 0x01 0x00 Level(1,Ally,True) [5,9] [5,9] [ironSword] [0x00,0x00,0x00,0x00]
UNIT Oswin 0x14 0x01 Level(3,Ally,True) [5,9] [2,9] [0x1E,0x6B] [0x00,0x00,0x00,0x00]
UNIT 0x31 0x32 0x01 Level(2,Ally,True) [5,9] [6,9] [0x15,0x6B] [0x00,0x00,0x00,0x00]
UNIT 0x6C 0x1E 0x01 Level(8,Ally,True) [5,9] [7,9] [0x40] [0x00,0x00,0x00,0x00]
UNIT 0x6C 0x1E 0x01 Level(8,Ally,True) [5,9] [4,9] [0x40] [0x00,0x00,0x00,0x00]
UNIT 0x6C 0x28 0x01 Level(7,Ally,True) [5,9] [3,9] [0x14] [0x00,0x00,0x00,0x00]
UNIT 0x6C 0x28 0x01 Level(7,Ally,True) [5,9] [8,9] [0x14] [0x00,0x00,0x00,0x00]
UNIT 0x6C 0x14 0x01 Level(6,Ally,True) [5,9] [2,9] [0x14] [0x00,0x00,0x00,0x00]
UNIT 0x6C 0x14 0x01 Level(6,Ally,True) [5,9] [9,9] [0x14] [0x00,0x00,0x00,0x00]
Good2:
UNIT 0x6C 0x38 0x3A Level(5,Ally,True) [5,9] [3,8] [0x14] [0x00,0x00,0x00,0x00]
UNIT 0x6C 0x38 0x3A Level(5,Ally,True) [5,9] [4,8] [0x14] [0x00,0x00,0x00,0x00]
UNIT 0x6C 0x38 0x3A Level(5,Ally,True) [5,9] [5,8] [0x14] [0x00,0x00,0x00,0x00]
UNIT 0x6C 0x38 0x3A Level(5,Ally,True) [5,9] [6,8] [0x14] [0x00,0x00,0x00,0x00]
UNIT 0x6C 0x38 0x3A Level(5,Ally,True) [5,9] [7,8] [0x14] [0x00,0x00,0x00,0x00]
UNIT 0x6C 0x38 0x3A Level(5,Ally,True) [5,9] [8,8] [0x14] [0x00,0x00,0x00,0x00]
UNIT 0x6C 0x38 0x3A Level(5,Ally,True) [5,9] [9,8] [0x14] [0x00,0x00,0x00,0x00]
UNIT 0xE6 0x38 0x3A Level(5,Ally,True) [5,9] [9,8] [0x14] [0x00,0x00,0x00,0x00]
UNIT
TurnEvents:
// Comment out or remove this line if you have a prep screen.
TURN 0x0 OpeningEvent [1,0] 0x0 0x0
TURN
END_MAIN
CharacterEvents:
//CHAR
END_MAIN
LocationEvents:
//LOCA
END_MAIN
MiscEvents:
CauseGameOverIfLordDies
AREA 0x10 SoldierCheck [9,6] [9,6]
//AFEV
END_MAIN
OpeningEvent:
// Change to ENDB if you have prep screen.
FADI 10
BACG 0x02
FADU 10
TEX1 0x0840
REMA
LOU1 Good
LOU1 Bad
LOU1 Good2
LOU1 Bad2
ENUN
ENDA
SoldierCheck:
//Put Conditional Check
//IFCA 0x00 0x?? 0xE6 or is it IFCA 0x01 0xE6
//MAC1 0x03? 0x00
//ELSE 0x02
//ENIF 0x01
//ENUF 0x24
//ENIF 0x02
//ENDA
EndingEvent:
//MNCH 0x__
//STAL 1
//_0x1
//ENDA
BallistaData:
BLST
MESSAGE Events end at offset currentOffset
MESSAGE The map for this chapter is at offset MAP_OFFS

When spawning in the units instead of going where they are supposed to they spawned like this.
3MbvwFh.png
Also how would I write the conditional check so that when the specific soldier steps on the tile it triggers a map change but anybody else doesnt not activate it but doesnt not render the event unusable. I attempted it already but I am not sure if I did it right and not sure if/how MAC1 works with Tiled.
EDIT: Sorry about the double post I thought I was editing the previous one.
Edited by Shamison
Link to comment
Share on other sites

When spawning in the units instead of going where they are supposed to they spawned like this.

Also how would I write the conditional check so that when the specific soldier steps on the tile it triggers a map change but anybody else doesnt not activate it but doesnt not render the event unusable. I attempted it already but I am not sure if I did it right and not sure if/how MAC1 works with Tiled.
EDIT: Sorry about the double post I thought I was editing the previous one.

And how exactly are they supposed to be spawning? We're going to need a little more information.

Edit: I'm guessing you mean you don't have as many playable units as you expected. You can't spawn player units that share the same character ID. You can, however, spawn enemies or NPCs with the same ID, and then change them to be playable units.

For the tile trigger, use an AREA event. In the event, you can use IFCA (If Character Active) to check which character is triggering the event. If it's not the right character, use an ENUF to reset the event's ID.

Edited by Primefusion
Link to comment
Share on other sites

Okay thanks. So I have to spawn all the units as enemy then use the switch command. But there was also more enemy units spawned then there should have been. And on both sides the pegasus knight and lord spawned on the same tile.

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...