• Announcements

    • Tangerine

      Serenes Forest Scribbles 2016 has begun, Raffle prizes have been updated!   12/03/16

      Hey everyone! We've started up our Creative event once more, you can check out the thread here:

      http://serenesforest.net/forums/index.php?showtopic=67567

      If you're new here, it's an event where people can submit something they've created for the chance to have some fun and win some prizes. If you've got a talent you'd like to share with the FE community, there's no harm in giving it a go!
Arch

Arch's Really Long Event Tutorial

8 posts in this topic

[center][b][size=5]Introduction[/size][/b][/center]

Welcome, reader, to [u]Arch's Really Long Event Tutorial[/u]. This is the second edition of my Chapter Construction tutorial adapted for Serenes Forest (where I can't abuse my admin powers and have 1 chapter per post). I figured I would bring this tutorial over here in hopes more people would be able to learn from it. Before we begin I do understand that my writing skills are lacking, I ask for your tolerance. This guide mostly revolves around using the Event Assembler to create chapters. This guide assumes you have a basic knowledge of Fire Emblem hacking. Please [u]do not[/u] attempt to learn event editing as your first bit of FE hacking. Before attempting to dive straight into the guide you'll need the proper tools.

- [url="http://www.fileden.com/files/2008/1/24/1717946/Event%20assembler.zip"]Nintenlord's Event Assembler[/url]
- [url="http://www.feuniverse.net/hacking/mappy.zip"]Mappy[/url]
- [url="http://www.fileden.com/files/2008/1/24/1717946/MAR%20array%20inserter.zip"]Nintenlord's .MAR Inserter[/url]
- A hex editor (I personally use [url="http://mh-nexus.de/en/hxd/"]HxD[/url])
- [url="http://www.feuniverse.net/forums/index.php?showtopic=27"]Nightmare Modules[/url]
- [url="http://www.feuniverse.net/forums/index.php?showtopic=1972"]Xeld's FE Editor[/url] or the [url="http://www.feuniverse.net/forums/index.php?showtopic=3814"]Text Editing Suites[/url] (for text editing).

[center][b][size=5]Maps[/size][/b][/center]
Before you can start coding events you'll need a map to place the events on. Mappy is the best way to accomplish this. When your masterpiece of a map is complete go to "File" and select "Export" and then put a check mark in the box marked "Map Array (?MAR)" and then press "Ok".

Now that we've got the .MAR file we use Nintenlord's .MAR Inserter. Open it up and fill out the required information. If your starting chapter hacking you should already know what an offset is. Open up your ROM and find some empty space (there's quite a bit in the 00D00000 area or you can make your own). When you've found the offset you wish to write the map to put it in the "offset" box. Make sure your map's dimensions are correct (mappy will tell you the dimensions of the map).

When your map is inserted it's time to put the finishing touches on. First off open up the Event Table Nightmare Module. Find the chapter who's map you wish to replace and replace the offset of the original map with the offset of yours. Your map is almost ready! The only thing left to do is to open up the Chapter Data Nightmare Module and fix the tileset. When the module is loaded select the proper tileset for the chapter to use.

Congratulations! Your map is all inserted and ready for coding!

[center][b][size=5]Setting Up[/size][/b][/center]

If your thinking this is going to be easy like the map, then you are dead wrong! Event coding is a tricky process and you will often find yourself frustrated at the fact that errors are quite difficult to spot unless their major errors.
[size=1][i]I, the author of this tutorial, am not responsible for any head-to-desk injuries that may result from event glitches.[/i][/size]

I will be teaching you using the Event Assembler because that is the easiest way to make events.

So, the first step is to create a .txt file. Name it whatever you wish.

Now, the first thing you need to know are the main types of events. There are turn-based events, location-based events, character-based events and miscellaneous events.

We start out by inserting the following code at the very top of our event file.
[code]#include EAstdlib.event[/code]

You don't need to know what that does, Nintenlord is the only one who needs to know. All you need to know is that you need to have that line of code at the top of your file, got it?

Next hit the 'Enter' key at least twice (I prefer twice), and insert this next lil' item.
[code]org 0xC9C9C8+(4*0x??)[/code]

This is going to do something extraordinarily useful for us. This edits the event pointer table with a pointer to your new events. All you have to do is replace the ?? with an actual value. When picking a value I find it useful to reference Nintenlord's notes on the pointer table.
[spoiler=Nintenlord's Notes: C9C9CC]0x00 None
0x01 ObjectSets: Sacae Plains
0x02 Palette: Sacae Plains: Light Sand
0x03 Set confic: Sacae Plains
0x04 Prologue Map
0x05 Animation: Water (Fields; Plains; M&S)
0x06 Prologue Events
0x07 Palette: Sacae Plains: Dark Sand
0x08 Ch.1 Map
0x09 Ch.1 Events
0x0A ObjectSets: Plains&Castle
0x0B Palette: Plains&Castle: Bright
0x0C Set config: Plains&Castle
0x0D Ch.2 Map
0x0E Ch.2 Map Tile change
0x0F Ch.2 Events
0x10 ObjectSets: Town&Docks
0x11 Palette: Town: Cliffs&stone road unusable
0x12 Set config: Town&Docks
0x13 Ch.3 Map
0x14 Ch.3 Map Tile change
0x15 Ch.3 Events
0x16 ObjectSets: Fortress&Fields
0x17 Palette: Fortress&Fields: Dawn
0x18 Set config: Fortress&Fields
0x19 Ch.4 Map
0x1A Ch.4 Map Tile change
0x1B Ch.4 Events
0x1C ObjectSets: Fields
0x1D ObjectSets: Fields
0x1E Palette: Fields: Sunny weather
0x1F Set config: Fields
0x20 Ch.5 Map
0x21 Ch.5 Events
0x22 Palette: Town: Cliffs&ship unusable
0x23 Ch.6 Map
0x24 Ch.6 Map Tile change
0x25 Ch.6 Events
0x26 Ch.7 Map
0x27 Ch.7 Map Tile change
0x28 Ch.7 Events
0x29 Palette: Plains&Castle: Neutral
0x2A Ch.7x Map
0x2B Ch.7x Map Tile change
0x2C Ch.7x Events
0x2D Ch.8 Map
0x2E Ch.8 Map Tile change
0x2F Ch.8 Events
0x30 Ch.9 Map
0x31 Ch.9 Map Tile change
0x32 Ch.9 Events
0x33 Palette: Fields: Darker; suitable for rain
0x34 Ch.10 Map
0x35 Ch.10 Map Tile change
0x36 Ch.10 Events
0x37 Ch.11E Map
0x38 Ch.11E Map Tile Change
0x39 Ch.11E Events
0x3A Palette: Plains&Castle: Castle Ostia/Laus
0x3B Ch.11H Map
0x3C Ch.11H Map Tile Change
0x3D Ch.11H Events
0x3E Ch.12 Map
0x3F Ch.12 Map Tile change
0x40 Ch.12 Events
0x41 Ch.13 Map
0x42 Ch.13 Map Tile change
0x43 Ch.13 Events
0x44 Palette: Fields: Night
0x45 Ch.13x Map
0x46 Ch.13x Map Tile change
0x47 Ch.13x Events
0x48 Palette: Fields: Darker; suitable for rain
0x49 Ch.14 Map
0x4A Ch.14 Map Tile change
0x4B Ch.14 Events
0x4C Ch.15H Map
0x4D Ch.15H Map Tile change
0x4E Ch.15H Events
0x4F Ch.15/16 Map
0x50 Ch.15/16 Map Tile change
0x51 Ch.15/16 Events
0x52 Palette: Plains&Castle: Castle Caelin
0x53 Ch.16/17 Map
0x54 Ch.16/17 Map Tile change
0x55 Ch.16/17 Events
0x56 Palette: Town: Ship&stone road unusable
0x57 Ch.16x/17x Map
0x58 Animation: Water (Town&Docks)
0x59 Ch.16x/17x Map Tile change
0x5A Ch.16x/17x Events
0x5B ObjectSets: Ship
0x5C Palette: Ship
0x5D Set config: Ship
0x5E Ch.17/18 Map
0x5F Animation: Water (Ship)
0x60 Ch.17/18 Map Tile Change
0x61 Ch.17/18 Events
0x62 Palette: Fields: Dull; suitable for fog
0x63 Ch.18/19 Map
0x64 Ch.18/19 Map Tile change
0x65 Ch.18/19 Events
0x66 Palette: Fields: Sunny weather
0x67 Ch.18x/19x Map
0x68 Ch.18x/19x Map Tile change
0x69 Ch.18x/19x Events
0x6A ObjectSets: Mountains&Shrine
0x6B Palette: Mountains&Shrine: Neutral
0x6C Set config: Mountains&Shrine
0x6D Ch.19x pt2 Map
0x6E Ch.19x pt2 Map Tile changes
0x6F Ch.19x pt2 Events
0x70 Ch.19/20 Map
0x71 Ch.19/20 Map Tile changes
0x72 Ch.19/20 Events
0x73 Palette: Town: Night
0x74 Ch.20/21 Map
0x75 Ch.20/21 Map Tile changes
0x76 Ch.20/21 Events
0x77 Palette: Fortress&Fields: Daytime
0x78 Ch.21/22 Map
0x79 Ch.21/22 Map Tile changes
0x7A Ch.21/22 Events
0x7B ObjectSets: Desert
0x7C Palette: Desert
0x7D Set config: Desert
0x7E Ch.22/23 Map
0x7F Ch.22/23 Events
0x80 Palette: Plains&Castle: Green&blue
0x81 Ch.22x/23x Map
0x82 Ch.22x/23x Map Tile changes
0x83 Ch.22x/23x Events
0x84 Ch.23/24 Map (Lloyd)
0x85 Ch.23/24 Map (Lloyd) Tile changes
0x86 Ch.23/24 (Lloyd) Events
0x87 Ch.23/24 Map (Linus)
0x88 Ch.23/24 Map (Linus) Tile changes
0x89 Ch.23/24 (Linus) Events
0x8A Palette: Fields: Neutral
0x8B Ch.25H Map
0x8C Ch.25H Map Tile changes
0x8D Ch.25H Events
0x8E Ch.24/26 Map
0x8F Ch.24/26 Map tile changes
0x90 Ch.24/26 Events
0x91 ObjectSets: Snow
0x92 Palette: Snow
0x93 Set confic: Snow
0x94 Ch.25/27 Map (Kenneth)
0x95 Ch.25/27 Map (Kenneth) Tile changes
0x96 Ch.25/27 (Kenneth) Events
0x97 Ch.25/27 Map (Jerme)
0x98 Animation: Shimmering ice (Snow)
0x99 Ch.25/27 Map (Jerme) Tile change
0x9A Ch.25/27 (Jerme) Events
0x9B Palette: Plains&Castle: Night
0x9C Ch.26/28 Map
0x9D Ch.26/28 Map Tile change
0x9E Ch.26/28 Events
0x9F Palette: Plains&Castle: Purple
0xA0 Ch.26x/28x Map
0xA1 Animation: Water (Plains&Castle)
0xA2 Ch.26x/28x Map Tile changes
0xA3 Ch.26x/28x Events
0xA4 Ch.27/29 Map
0xA5 Ch.27/29 Map Tile changes
0xA6 Ch.27/29 Events
0xA7 ObjectSets: Lava Cave
0xA8 Palette: Lava Cave
0xA9 Set config: Lava Cave
0xAA Ch.28E Map
0xAB Animation: Lava (Lava Cave)
0xAC Ch.28E Map
0xAD Ch.28E Events
0xAE ObjectSets: Sand Cave
0xAF Palette: Sand Cave
0xB0 Set config: Sand Cave
0xB1 Ch.30H Map
0xB2 Ch.30H Map Tile changes
0xB3 Ch.30H Events
0xB4 Ch.29/31 Map
0xB5 Ch.29/31 Map Tile change
0xB6 Ch.29/31 Events
0xB7 Palette: Town: Ship&stone road unusable
0xB8 Ch.29x/31x Map
0xB9 Ch.29x/31x Events
0xBA Ch.30/32 Map
0xBB Ch.30/32 Map Tile Changes
0xBC Ch.30/32 Events
0xBD Palette: Mountains&Shrine: No plains
0xBE Ch.32x Map
0xBF Ch.32x Map Tile changes
0xC0 Ch.32x Events
0xC1 ObjectSets: Dragon's Gate
0xC2 Palette: Dragon's Gate
0xC3 Set config Dragon's Gate
0xC4 Final Ch. pt1 Map
0xC5 Animation: Gate and flames (Dragon's Gate)
0xC6 Final Ch. pt1 Map Tile change
0xC7 Final Ch. pt1 Events
0xC8 Final Ch. pt2 Map
0xC9 Final Ch. pt2 Map Tile change
0xCA Final Ch. pt2 Events
0xCB [3642E8]
0xCC [CE3A60] Tile change
0xCD [CA6890]
0xCE [36423C]
0xCF [CA68F0]
0xD0 [364108]
0xD1 [CA6950]
0xD2 [363FE4]
0xD3 [CA69B0]
0xD4 [366678]
0xD5 [363E80]
0xD6 [CA6A10]
0xD7 [363D2C]
0xD8 [CA6A70]
0xD9 [360538]
0xDA [363C58]
0xDB [CA6AD0]
0xDC [363B7C]
0xDD [CA6B30]
0xDE [363A38]
0xDF [CA6B90]
0xE0 [3603F8]
0xE1 [363900]
0xE2 [CA6BF0]
0xE3 [363800]
0xE4 [CA6C50]
0xE5 [3636F4]
0xE6 [CA6CB0]
0xE7 [3602B8]
0xE8 [3635B0]
0xE9 [CA6D10]
0xEA [363474]
0xEB [CA6D70]
0xEC [363328]
0xDE [CA6DD0]
0xEE [3631C8]
0xEF [CE3B40] Tile change
0xF0 [CA6E30]
0xF1 [3630C0]
0xF2 [362FB8][/spoiler]

Just pick a value. I'll usually use the value of the chapter I'm overwriting. If I'm making the Prologue to a game I'll use 0x06 (Prologue Events). You can use any slot you want but for more basic hackers I'd recommend sticking to overwriting the value of the chapter you're using.

Alright, the next thing we need to do is create our POINs. POIN stands for pointer which points to some data. In FE7 there are 16 starting POINs which each must go in a correct order. The first POIN points to your turn events. The second to your character events, the third to location events and the fourth to miscellaneous events. the 5th and 6th point to ballista data for normal and hard modes. 7-10 point to enemy data for all four modes (Eliwood Normal, Eliwood Hard, Hector Normal, Hector Hard) while 11-14 point to ally data for all four modes. 15 is your opening event and 16 is your closing event.

Now, this is all quite a lot to remember. It took me quite a while to memorize this. What really helped me to memorize it is this template I made. This has all the POINs sorted and labeled for you.

[spoiler=POIN Template]POIN Pointers

org 0x????????
Pointers:
POIN Turn_events
POIN Character_event
POIN Location_events
POIN Misc_events
POIN BallistaN BallistaH
POIN BadEN BadEH BadHN BadHH
POIN GoodEN GoodEH GoodHN GoodHH
POIN Opening_event Ending_event[/spoiler]

Now, your probably wondering "Turn_events? Opening_event? What does this mean?" Well, you see. ____ points to a specified event. 'Character_events' points to another location in the file labeled 'Character_events.' This method saves a lot of hassle as before you had to make all the character events and then handle the offset in the POIN table. Now all you have to do is label something and your good to go!

Another important concept I need to cover is how to specify where to write the data into the game. With old versions of the assembler you just filled in a box and that was it, however, Nintenlord thought it'd be more beneficial to specify it within the file. In that POIN template I posted above before the POINs there is another piece of code.
[code]org 0x????????[/code]
This specifies where you are writing your events. Just plug in a pointer. Use any space you want, I recommend using the free space which begins around D80000.

There is a template included in the Event Assembler download. For convenience I'll post it below. It has the basic setup for your event file.

[spoiler=Basic Setup]//Made by markyjoe1990 of Youtube
//Modified by Nintenlord

#define DISABLE_TUTORIALS
#include EAstdlib.event

EventPointerTable(0x??,Pointers)


org 0x????????
Pointers:
POIN Turn_events
POIN Character_events
POIN Location_events
POIN Misc_events
POIN BallistaData BallistaData
POIN Bad Bad Bad Bad
POIN Good Good Good Good
POIN Opening_event Ending_event

Bad:
UNIT

Good:
UNIT

Turn_events:
TURN

Character_events:
CHAR

Location_events:
LOCA

Misc_events:
CauseGameOverIfLordDies
AFEV

Opening_event:
ENDA

Ending_event:
MNCH 0x??
ENDA

BallistaData:
BLST


MESSAGE Events end at offset currentOffset
//The map for this chapter is at offset: ????????
[/spoiler]

This template not only includes the POINs but also the labels. Just follow the instructions in the template and you'll be well off!

Something worth noting, you can make comments in your event files. "//" is the code for the assembler to stop reading for the rest of that line. You can type anything after a "//" and it won't effect your events at all (very useful for noting where you put things).

[center][size=5][b]Scenic Events[/b][/size][/center]

Now that we have our setup I'll move on to teaching you some basics about making the events themselves.

Something you need to be wary of are the ENDA and ENDB commands. You put ENDA at the end of any event. ENDB is used in opening events of chapters that use the preparations screen.

The most basic scenic event you will need to know is how to load text. The basic text loading code is
[code]TEX1 (Index of text)[/code]
What's in parenthesis will be replaced by the value you need. The text index # is something you'll need to find on your own with the parser or FEditor.

But hey! What's a good conversation without a little music?
[code]MUS1 (Value of song)[/code]

[spoiler=Song values]
0x0001 Precious Things
0x0002 Companions
0x0003 Friendship and Adventure
0x0004 Dragon's Gate II
0x0005 Scars of the Scouring
0x0006 Raise Your Spirits
0x0007 Shadow Approaches
0x0008 Binding Ties
0x0009 Winning Road
0x000A Distant Travels
0x000B Inescapable Fate
0x000C Enemies Appear
0x000D The Messenger
0x000E Darkness Comes
0x000F Nabata's Wandering Messenger
0x0010 Dragon's Gate I
0x0011 Legendary Inheritance
0x0012 Raid!
0x0013 Messenger from the Darkness
0x0014 Victory Now!
0x0015 Rise to the Challenge
0x0016 Softly with Grace
0x0017 Everything into the Dark
0x0018 Campaign of Fire
0x0019 Healing
0x001A Curing
0x001B To the Heights
0x001C Blessing of the 8 Generals I
0x001D Receive the Blessings of Water
0x001E Ride the Wind
0x001F Strike
0x0020 Safeguard
0x0021 Requiem
0x0022 Land of Swirling Sands
0x0023 The Kingdom of Bern
0x0024 Bern - A Mother's Wish
0x0025 A Hint of Things to Come
0x0026 Road of Trials
0x0027 Destiny Enlaced by Fear
0x0028 None
0x0029 Results
0x002A Treasured Hope
0x002B Game Over
0x002C Within Sadness
0x002D Arena Victory
0x002E Arena Tactics
0x002F None
0x0030 Winds Across the Plains
0x0031 None
0x0032 An Unexpected Caller
0x0033 When the Rush Comes
0x0034 The Cogs of Fate
0x0035 Shocking Truth I
0x0036 Shocking Truth II
0x0037 The Eight Generals
0x0038 Triumph
0x0039 In the Shadow of Triumph
0x003A Reminiscence
0x003B Nergal's Wrath
0x003C The Archsage Athos
0x003D One Heart: Eliwood's Theme
0x003E Loyalty: Hector's Theme
0x003F Girl of the Plains: Lyn's Theme
0x0040 Final Farewell
0x0041 Going My Way
0x0042 Together, We Ride!
0x0043 A Knight's Oath
0x0044 Happiness Abounds
0x0045 Main Theme Arrangement
0x0046 Shop
0x0047 Arena Entrance
0x0048 Arena Battle
0x0049 Prepare to Charge
0x004A Calamity Bringer: Nergal's Theme
0x004B Light to Tomorrow
0x004C Merlinus
0x004D Armory
0x004E Ships and Homes
0x004F Silent Ground
0x0050 Black Fang
0x0051 Recollection of a Petal
0x0052 What Comes from Darkness
0x0053 Stratagem
0x0054 Lyn's Desire
0x0055 None
0x0056 Eyes of Sorrow
0x0057 Unshakable Faith
0x0058 The Grieving Heart
0x0059 None
0x005A Fire Emblem Theme
0x005B Main Theme Arrangement
0x005C Opening: History Unveiled
0x005D Distant Utopia
0x005E Fortune Telling
0x005F Fire Emblem Theme (+Intro)
0x0060 Chapter Title Sound 1
0x0061 Chapter Title Sound 2
0x0062 Droplet (Opening scene)
0x0063 Fire&Sword (Opening scene)
0x0064 What Comes from Darkness
0x0065 Black Fang
0x0066 Going My Way
0x0067 Safeguard
0x0068 Shattered Life
0x0069 Anguish
0x006A Respite in Battle
0x006B The Inn
0x006C None
0x006D None
0x006E Blessing of the 8 Generals II
0x006F Campaign of Fire (No intro)
0x0070 Beneath a New Light
0x0071 The Path to Greatness
0x0072 In the Name of Bern
0x0073 Legend of Athos
0x0074 Avoided Fate (All parts)
0x0075 Legend of the Dragon God
0x0076 Royal Palace of Silezha
0x0077 Avoided Fate (Part I)
0x0078 Avoided Fate (Part II)
0x0079 Avoided Fate (Part III)
0x03A3 Silent Ground + Birds/wind ambience
0x03A4 Ambience (Breeze and birds)
0x03A6 Ambience (Storm (low-pitched))
0x03A8 Ambience (Bubbling and thunder)
0x03A9 Ambience (Night)
0x03AA Ambience (Ocean)
0x03AC Ambience (Coast)
0x03AE Ambience (Storm (high-pitched)
0x03B1 Ambience (Magical sounds)
0x03B8 Ambience (Night sounds and breeze)
[/spoiler]

Now, when the little conversation is over you'll need to have a REMA command to clear the map of unwanted face sprites. You use this command anytime you load text and a background. You will also use the MUEN command to fade out music.

[code]REMA[/code]
[code]MUEN (value of fadeout, recommended 0x05)[/code]

Here is an example of a conversation
[code]@Conversation1
MUS1 0x0076
TEX1 0x000008
MUEN 0x05
REMA
ENDA[/code]

You can also use background for text.

[code]BACG (Value of background)[/code]

[spoiler=Backgrounds]
0x00 - Lyn's Tent Background
0x01 - House with fireplace
0x02 - Village (Garden)
0x03 - Village (Garden) (Night)
0x04 - On a Road to a Town or Village
0x05 - On a Road to a Town or Village (Night)
0x06 - On a Road to a Town or Village (Sunset)
0x07 - On a Road to a Town or Village (Partial Dark)
0x08 - On a Road to a Town or Village (Lighter Thing?)
0x09 - Destroyed Village (Originally 0x02)
0x0A - Sea Port
0x0B - Ship
0x0C - Ocean Coast with Rocks
0x0D - Hotel/House
0x0E - Outside of Palace (One in Bern)
0x0F - Outside of Castle (Special)
0x10 - Inside of Castle (Bluish-Green Pillars)
0x11 - Same as 0x10, Darker
0x12 - Room in a Castle (Used in Laus and Caelin?)
0x13 - Same as 0x12, Darker
0x14 - Castle Room (Used in Bern)
0x15 - Castle Hall (Light-Colored Walls)
0x16 - Same as 0x15, Darker, Purple Walls
0x17 - Caelin Castle Garden (used in end of Lyn's Tale)
0x18 - Castle Garden with Bushes
0x19 - Castle Hallway, Door in Front
0x1A - Same as 0x19, Darker, Purple Walls
0x1B - Prison/Cell
0x1C - Outside, Forest on Left (Grass)
0x1D - Plains with Hill and Mountains in background
0x1E - Same as 0x1C, Sunset
0x1F - Same as 0x1C, Dark/Night
0x20 - Same as 0x1C, Foggy/Cloudy
0x21 - Same as 0x20, More Fog
0x22 - Plains
0x23 - Outside, Forest and Mountains Background
0x24 - Same as 0x23, Part Darker
0x25 - Same as 0x23, Fog
0x26 - Same as 0x23, Sunset
0x27 - Same as 0x24, Darker/Night
0x28 - Same as 0x24, Lighter
0x29 - Forest/Grass with Mountains (Special)
0x2A - Forest with Tall Trees
0x2B - Forest (Special)
0x2C - Forest (Different)
0x2D - Forest with Light out of Corner
0x2E - Forest of 0x2C (Foggy)
0x2F - City (Bulgar)
0x30 - City (Bulgar, Golden)
0x31 - Outside of City Gate
0x32 - Same as 0x31, Sunset
0x33 - Same as 0x31, Darker
0x34 - Same as 0x31 (???)
0x35 - House/Hotel with Bed
0x36 - Outside of Castle/Fortress (Brown)
0x37 - Outside of Castle/Fortress (Gray)
0x38 - Same as 0x36, Night
0x39 - Outside of Castle/Fortress (Different) (Brown)
0x3A - Outside of Castle/Fortress (Gray)
0x3B - Same as 0x39, Different Palette
0x3C - Castle/Dungeon (Inside)
0x3D - Same as 0x3C, Night? (Purple)
0x3E - Same as 0x3C, Sunset?
0x3F - Outside, Abandoned Fortress Background
0x40 - Same as 0x3F, Sunset
0x41 - Same as 0x3F, Foggy
0x42 - Inside Abandoned Fortress (Brown)
0x43 - Inside Abandoned Fortress (Purple/Dark?)
0x44 - Dragon's Gate Hall/Chamber (Brown)
0x45 - Dragon's Gate Hall/Chamber (Green)
0x46 - Dungeon Hallway (Brown)
0x47 - Dungeon Hallway (Blue)
0x48 - Dungeon Hallway (Green)
0x49 - Shrine/Alter
0x4A - Athos Shrine/Alter
0x4B - Athos Shrine/Alter (Darker)
0x4C - Shrine Hallway
0x4D - Shrine Hallway (Darker)
0x4E - Shrine Hallway (Purple)
0x4F - Shrine/Alter 2 (Brown)
0x50 - Shrine/Alter 2 (Golden)
0x51 - Desert
0x52 - Desert (Sunset)
0x53 - Dragon's Gate (Green)
0x54 - Dragon's Gate (Dark/Night)
0x55 - Fire Pit/Underworld
0x56 - Shrine/Alter 3 (Durandal?)
0x57 - Cave
0x58 - Shrine/Alter 4
0x59 - Sky
0x5A - Camp/Tent with Weapons
0x5B - Black Background
0x5C - Dragon's Gate (Close-Up)
0x5D - Dragon's Gate (Close-Up) (Lighter)
0x5E - To Be Continued
0x5F- Game Over
[/spoiler]

Now, just instantaneously loading a background doesn't look good. For this we use the FADI and FADU to fade-in and fade-out respectively.

[code]FADI (value of fade-in, recommended 0x10)[/code]
[code]FADU (value of fade-in, recommended 0x10)[/code]

However, there is a quicker method. Thanks to Nintenlord's macros.
[code]Text(background,text)[/code]
This is the same thing as
[code]FADI 0x10
BACG background
FADU 0x10
TEX1 text
REMA[/code]

Sometimes multiple conversations will take place back to back. If you want to change the background smoothly you can use this macro.
[code]ChangeBackground(background)[/code]
This would not be good to use with the Text(background,text) macro since that macro returns to the map.

A plain conversation is all fine and good but there are several things you can do with this conversation to make it a little more rewarding.

One thing we could do is give one of our units an item for initiating the conversation.
[code]ITGV (Character to give to) (Item received)[/code]

A little bit of gold couldn't hurt...
[code]MONE 0x00 (Amount)[/code]
For that first parameter, your options are 0x00 (Village) or 0x01 (Cutscene). I don't know any more than that.

Oh hey, maybe even a recruitment conversation!
[code]CUSI (character) (alliance)[/code]
For the alliance $00 makes the character an ally, $57 makes the character and NPC, and $A7 makes the character an enemy.

There are all sorts of fun things you can make with events, however conversations is only one part of it. You can also play around with things on the map.

Like forcibly moving units.
[code]MOVE (unit) (coordinates)

- Co-ordinates are in this format [XX,YY]. Always have 2 digits for good measure (for example use 06 instead of 6)
- The unit MUST be on the map to make this work. If the unit isn't it can cause all sorts of glitches.[/code]

Of course, sometimes you just want somebody to disappear.
[code]DISA (unit)[/code]

[center][size=5][b]Units[/b][/size][/center]

Making units for your chapters is really quite simple. Anyone familiar with the Chapter Unit Editor nightmare modules will get this really fast.

[code]UNIT (Unit value) (Class) (Leader) (Starting Level) (Loading Coordinates, [XX,YY]) (Starting Coordinates, [XX,YY]) [(Item1),(Item2),(Item3),(Item4)] [(AI byte1),(AI byte2),(AI byte3),(AI byte4)][/code]

[u]Notes: [/u]
[list]
[*]The unit value is the unit's hex number. For instance if I wanted to load Eliwood then I would use 0x01. The unit's class is also a hex value. These hex values can be replaced with defined variables (shown below).
[*]The loading coordinates are where the unit is loaded, after being loaded the unit will move to its starting coordinates. For non-moving units just set both coordinates to be the same.
[*]The unit's leader is not of much importance, however I suppose you could put it in.
[*]Starting level is in hex, the values are a little funky so I have a list for you.
[/list]

[spoiler=Starting level list]
0x00 0, Player
0x01 0, Player (autolevel)
0x02 0, NPC
0x03 0, NPC (autolevel)
0x04 0, Enemy
0x05 0, Enemy (autolevel)
0x06 0
0x07 0
0x08 1, Player
0x09 1, Player (autolevel)
0x0A 1, NPC
0x0B 1, NPC (autolevel)
0x0C 1, Enemy
0x0D 1, Enemy (autolevel)
0x0E 1
0x0F 1
0x10 2, Player
0x11 2, Player (autolevel)
0x12 2, NPC
0x13 2, NPC (autolevel)
0x14 2, Enemy
0x15 2, Enemy (autolevel)
0x16 2
0x17 2
0x18 3, Player
0x19 3, Player (autolevel)
0x1A 3, NPC
0x1B 3, NPC (autolevel)
0x1C 3, Enemy
0x1D 3, Enemy (autolevel)
0x1E 3
0x1F 3
0x20 4, Player
0x21 4, Player (autolevel)
0x22 4, NPC
0x23 4, NPC (autolevel)
0x24 4, Enemy
0x25 4, Enemy (autolevel)
0x26 4
0x27 4
0x28 5, Player
0x29 5, Player (autolevel)
0x2A 5, NPC
0x2B 5, NPC (autolevel)
0x2C 5, Enemy
0x2D 5, Enemy (autolevel)
0x2E 5
0x2F 5
0x30 6, Player
0x31 6, Player (autolevel)
0x32 6, NPC
0x33 6, NPC (autolevel)
0x34 6, Enemy
0x35 6, Enemy (autolevel)
0x36 6
0x37 6
0x38 7, Player
0x39 7, Player (autolevel)
0x3A 7, NPC
0x3B 7, NPC (autolevel)
0x3C 7, Enemy
0x3D 7, Enemy (autolevel)
0x3E 7
0x3F 7
0x40 8, Player
0x41 8, Player (autolevel)
0x42 8, NPC
0x43 8, NPC (autolevel)
0x44 8, Enemy
0x45 8, Enemy (autolevel)
0x46 8
0x47 8
0x48 9, Player
0x49 9, Player (autolevel)
0x4A 9, NPC
0x4B 9, NPC (autolevel)
0x4C 9, Enemy
0x4D 9, Enemy (autolevel)
0x4E 9
0x4F 9
0x50 10, Player / Predetermined
0x51 10, Player (autolevel)
0x52 10, NPC
0x53 10, NPC (autolevel)
0x54 10, Enemy
0x55 10, Enemy (autolevel)
0x56 10
0x57 10
0x58 11, Player
0x59 11, Player (autolevel)
0x5A 11, NPC
0x5B 11, NPC (autolevel)
0x5C 11, Enemy
0x5D 11, Enemy (autolevel)
0x5E 11
0x5F 11
0x60 12, Player
0x61 12, Player (autolevel)
0x62 12, NPC
0x63 12, NPC (autolevel)
0x64 12, Enemy
0x65 12, Enemy (autolevel)
0x66 12
0x67 12
0x68 13, Player
0x69 13, Player (autolevel)
0x6A 13, NPC
0x6B 13, NPC (autolevel)
0x6C 13, Enemy
0x6D 13, Enemy (autolevel)
0x6E 13
0x6F 13
0x70 14, Player
0x71 14, Player (autolevel)
0x72 14, NPC
0x73 14, NPC (autolevel)
0x74 14, Enemy
0x75 14, Enemy (autolevel)
0x76 14
0x77 14
0x78 15, Player
0x79 15, Player (autolevel)
0x7A 15, NPC
0x7B 15, NPC (autolevel)
0x7C 15, Enemy
0x7D 15, Enemy (autolevel)
0x7E 15
0x7F 15
0x80 16, Player
0x81 16, Player (autolevel)
0x82 16, NPC
0x83 16, NPC (autolevel)
0x84 16, Enemy
0x85 16, Enemy (autolevel)
0x86 16
0x87 16
0x88 17, Player
0x89 17, Player (autolevel)
0x8A 17, NPC
0x8B 17, NPC (autolevel)
0x8C 17, Enemy
0x8D 17, Enemy (autolevel)
0x8E 17
0x8F 17
0x90 18, Player
0x91 18, Player (autolevel)
0x92 18, NPC
0x93 18, NPC (autolevel)
0x94 18, Enemy
0x95 18, Enemy (autolevel)
0x96 18
0x97 18
0x98 19, Player
0x99 19, Player (autolevel)
0x9A 19, NPC
0x9B 19, NPC (autolevel)
0x9C 19, Enemy
0x9D 19, Enemy (autolevel)
0x9E 19
0x9F 19
0xA0 20, Player
0xA1 20, Player (autolevel)
0xA2 20, NPC
0xA3 20, NPC (autolevel)
0xA4 20, Enemy
0xA5 20, Enemy (autolevel)
0xA6 20
0xA7 20
0xA8 21, Player
0xA9 21, Player (autolevel)
0xAA 21, NPC
0xAB 21, NPC (autolevel)
0xAC 21, Enemy
0xAD 21, Enemy (autolevel)
0xAE 21
0xAF 21
0xB0 22, Player
0xB1 22, Player (autolevel)
0xB2 22, NPC
0xB3 22, NPC (autolevel)
0xB4 22, Enemy
0xB5 22, Enemy (autolevel)
0xB6 22
0xB7 22
0xB8 23, Player
0xB9 23, Player (autolevel)
0xBA 23, NPC
0xBB 23, NPC (autolevel)
0xBC 23, Enemy
0xBD 23, Enemy (autolevel)
0xBE 23
0xBF 23
0xC0 24, Player
0xC1 24, Player (autolevel)
0xC2 24, NPC
0xC3 24, NPC (autolevel)
0xC4 24, Enemy
0xC5 24, Enemy (autolevel)
0xC6 24
0xC7 24
0xC8 25, Player
0xC9 25, Player (autolevel)
0xCA 25, NPC
0xCB 25, NPC (autolevel)
0xCC 25, Enemy
0xCD 25, Enemy (autolevel)
0xCE 25
0xCF 25
0xD0 26, Player
0xD1 26, Player (autolevel)
0xD2 26, NPC
0xD3 26, NPC (autolevel)
0xD4 26, Enemy
0xD5 26, Enemy (autolevel)
0xD6 26
0xD7 26
0xD8 27, Player
0xD9 27, Player (autolevel)
0xDA 27, NPC
0xDB 27, NPC (autolevel)
0xDC 27, Enemy
0xDD 27, Enemy (autolevel)
0xDE 27
0xDF 27
0xE0 28, Player
0xE1 28, Player (autolevel)
0xE2 28, NPC
0xE3 28, NPC (autolevel)
0xE4 28, Enemy
0xE5 28, Enemy (autolevel)
0xE6 28
0xE7 28
0xE8 29, Player
0xE9 29, Player (autolevel)
0xEA 29, NPC
0xEB 29, NPC (autolevel)
0xEC 29, Enemy
0xED 29, Enemy (autolevel)
0xEE 29
0xEF 29
0xF0 30, Player
0xF1 30, Player (autolevel)
0xF2 30, NPC
0xF3 30, NPC (autolevel)
0xF4 30, Enemy
0xF5 30, Enemy (autolevel)
0xF6 30
0xF7 30
0xF8 31, Player
0xF9 31, Player (autolevel)
0xFA 31, NPC
0xFB 31, NPC (autolevel)
0xFC 31, Enemy
0xFD 31, Enemy (autolevel)
0xFE 31
0xFF 31[/spoiler]

But, thanks to Nintenlord, there is a much more convenient way to do enemy levels. Instead of a hex value, use the following code.
[code]Level(level,side,autolevel?)[/code]

For 'side' put either Ally, NPC or Enemy. For 'autolevel?' it will be either True of False. 'level' will be the numerical value of the level.

As you may have noticed there are [u]two [/u]sets of coordinates. The loading coordinates are where the unit is loaded onto the map. Once loaded, a unit will move to the specified starting coordinates.

Then comes the unit's inventory, all values are once again in hex. If you don't want to use an inventory slot just use 0x00 to specify that there's no item in that slot. However, you cannot have a 0x00 followed by an item. If you do then your game will crash and...well... your ears will heart...

And now the finishing touch is the unit's artificial intelligence. It comes in four bytes.

[spoiler=AI Byte 1]0x00 Nothing Specific
0x01
0x02
0x03 Stand Still
0x04
0x05
0x06 Do not attack, even if in range. (Unless only one left?)
0x07
0x08
0x09
0x0A
0x0B
0x0C
0x0D
0x0E
0x0F Heal Units
0x10
0x11
0x12
0x13
0x14
0x15
0x16
0x17
0x18
0x19
0x1A
0x1B
0x1C
0x1D
0x1E
0x1F
0x20
0x21
0x22
0x23
0x24
0x25
0x26
0x27
0x28
0x29
0x2A
0x2B
0x2C
0x2D
0x2E
0x2F
0x30
0x31
0x32
0x33
0x34
0x35
0x36
0x37
0x38
0x39
0x3A
0x3B
0x3C
0x3D
0x3E
0x3F
0x40
0x41
0x42
0x43
0x44
0x45
0x46
0x47
0x48
0x49
0x4A
0x4B
0x4C
0x4D
0x4E
0x4F
0x50
0x51
0x52
0x53
0x54
0x55
0x56
0x57
0x58
0x59
0x5A
0x5B
0x5C
0x5D
0x5E
0x5F
0x60
0x61
0x62
0x63
0x64
0x65
0x66
0x67
0x68
0x69
0x6A
0x6B
0x6C
0x6D
0x6E
0x6F
0x70
0x71
0x72
0x73
0x74
0x75
0x76
0x77
0x78
0x79
0x7A
0x7B
0x7C
0x7D
0x7E
0x7F
0x80
0x81
0x82
0x83
0x84
0x85
0x86
0x87
0x88
0x89
0x8A
0x8B
0x8C
0x8D
0x8E
0x8F
0x90
0x91
0x92
0x93
0x94
0x95
0x96
0x97
0x98
0x99
0x9A
0x9B
0x9C
0x9D
0x9E
0x9F
0xA0
0xA1
0xA2
0xA3
0xA4
0xA5
0xA6
0xA7
0xA8
0xA9
0xAA
0xAB
0xAC
0xAD
0xAE
0xAF
0xB0
0xB1
0xB2
0xB3
0xB4
0xB5
0xB6
0xB7
0xB8
0xB9
0xBA
0xBB
0xBC
0xBD
0xBE
0xBF
0xC0
0xC1
0xC2
0xC3
0xC4
0xC5
0xC6
0xC7
0xC8
0xC9
0xCA
0xCB
0xCC
0xCD
0xCE
0xCF
0xD0
0xD1
0xD2
0xD3
0xD4
0xD5
0xD6
0xD7
0xD8
0xD9
0xDA
0xDB
0xDC
0xDD
0xDE
0xDF
0xE0
0xE1
0xE2
0xE3
0xE4
0xE5
0xE6
0xE7
0xE8
0xE9
0xEA
0xEB
0xEC
0xED
0xEE
0xEF
0xF0
0xF1
0xF2
0xF3
0xF4
0xF5
0xF6
0xF7
0xF8
0xF9
0xFA
0xFB
0xFC
0xFD
0xFE
0xFF All of the above[/spoiler]

[spoiler=AI Byte 2]0x00 Nothing Specific
0x01
0x02 Pursue
0x03 Guard, Attack only those in range
0x04 Heal Allies, if possible (Regular AI)
0x05 1st turn only, acquire target once. If target ever moves out of range, disable AI for rest of map.
0x06 Regular AI
0x07 ""
0x08 ""
0x09 Random movement + Guard
0x0A Regular AI
0x0B Regular AI
0x0C Guard
0x0D Guard
0x0E Regular AI
0x0F Regular AI
0x10
0x11
0x12 Wait one turn, then pursue
0x13
0x14
0x15
0x16
0x17
0x18
0x19
0x1A
0x1B
0x1C
0x1D
0x1E
0x1F
0x20
0x21
0x22 Wait two turns, then pursue
0x23
0x24
0x25
0x26
0x27
0x28
0x29
0x2A
0x2B
0x2C
0x2D
0x2E
0x2F
0x30 (Crashes or nothing beyond this point)
0x31
0x32
0x33
0x34
0x35
0x36
0x37
0x38
0x39
0x3A
0x3B
0x3C
0x3D
0x3E
0x3F
0x40
0x41
0x42
0x43
0x44
0x45
0x46
0x47
0x48
0x49
0x4A
0x4B
0x4C
0x4D
0x4E
0x4F
0x50
0x51
0x52
0x53
0x54
0x55
0x56
0x57
0x58
0x59
0x5A
0x5B
0x5C
0x5D
0x5E
0x5F
0x60
0x61
0x62
0x63
0x64
0x65
0x66
0x67
0x68
0x69
0x6A
0x6B
0x6C
0x6D
0x6E
0x6F
0x70
0x71
0x72
0x73
0x74
0x75
0x76
0x77
0x78
0x79
0x7A
0x7B
0x7C
0x7D
0x7E
0x7F
0x80
0x81
0x82
0x83
0x84
0x85
0x86
0x87
0x88
0x89
0x8A
0x8B
0x8C
0x8D
0x8E
0x8F
0x90
0x91
0x92
0x93
0x94
0x95
0x96
0x97
0x98
0x99
0x9A
0x9B
0x9C
0x9D
0x9E
0x9F
0xA0
0xA1
0xA2
0xA3
0xA4
0xA5
0xA6
0xA7
0xA8
0xA9
0xAA
0xAB
0xAC
0xAD
0xAE
0xAF
0xB0
0xB1
0xB2
0xB3
0xB4
0xB5
0xB6
0xB7
0xB8
0xB9
0xBA
0xBB
0xBC
0xBD
0xBE
0xBF
0xC0
0xC1
0xC2
0xC3
0xC4
0xC5
0xC6
0xC7
0xC8
0xC9
0xCA
0xCB
0xCC
0xCD
0xCE
0xCF
0xD0
0xD1
0xD2
0xD3
0xD4
0xD5
0xD6
0xD7
0xD8
0xD9
0xDA
0xDB
0xDC
0xDD
0xDE
0xDF
0xE0
0xE1
0xE2
0xE3
0xE4
0xE5
0xE6
0xE7
0xE8
0xE9
0xEA
0xEB
0xEC
0xED
0xEE
0xEF
0xF0
0xF1
0xF2
0xF3
0xF4
0xF5
0xF6
0xF7
0xF8
0xF9
0xFA
0xFB
0xFC
0xFD
0xFE
0xFF All of the above[/spoiler]

[spoiler=AI Byte 3]0x00 Nothing Specific
0x01
0x02 Attack without heed to HP.
0x03
0x04
0x05
0x06
0x07
0x08
0x09
0x0A
0x0B
0x0C
0x0D
0x0E
0x0F
0x10
0x11
0x12
0x13
0x14
0x15
0x16
0x17
0x18
0x19
0x1A
0x1B
0x1C
0x1D
0x1E
0x1F
0x20
0x21
0x22
0x23
0x24
0x25
0x26
0x27
0x28
0x29
0x2A
0x2B
0x2C
0x2D
0x2E
0x2F
0x30
0x31
0x32
0x33
0x34
0x35
0x36
0x37
0x38
0x39
0x3A
0x3B
0x3C
0x3D
0x3E
0x3F
0x40
0x41
0x42
0x43
0x44
0x45
0x46
0x47
0x48
0x49
0x4A
0x4B
0x4C
0x4D
0x4E
0x4F
0x50
0x51
0x52
0x53
0x54
0x55
0x56
0x57
0x58
0x59
0x5A
0x5B
0x5C
0x5D
0x5E
0x5F
0x60
0x61
0x62
0x63
0x64
0x65
0x66
0x67
0x68
0x69
0x6A
0x6B
0x6C
0x6D
0x6E
0x6F
0x70
0x71
0x72
0x73
0x74
0x75
0x76
0x77
0x78
0x79
0x7A
0x7B
0x7C
0x7D
0x7E
0x7F
0x80
0x81
0x82
0x83
0x84
0x85
0x86
0x87
0x88
0x89
0x8A
0x8B
0x8C
0x8D
0x8E
0x8F
0x90
0x91
0x92
0x93
0x94
0x95
0x96
0x97
0x98
0x99
0x9A
0x9B
0x9C
0x9D
0x9E
0x9F
0xA0
0xA1
0xA2
0xA3
0xA4
0xA5
0xA6
0xA7
0xA8
0xA9
0xAA
0xAB
0xAC
0xAD
0xAE
0xAF
0xB0
0xB1
0xB2
0xB3
0xB4
0xB5
0xB6
0xB7
0xB8
0xB9
0xBA
0xBB
0xBC
0xBD
0xBE
0xBF
0xC0
0xC1
0xC2
0xC3
0xC4
0xC5
0xC6
0xC7
0xC8
0xC9
0xCA
0xCB
0xCC
0xCD
0xCE
0xCF
0xD0
0xD1
0xD2
0xD3
0xD4
0xD5
0xD6
0xD7
0xD8
0xD9
0xDA
0xDB
0xDC
0xDD
0xDE
0xDF
0xE0
0xE1
0xE2
0xE3
0xE4
0xE5
0xE6
0xE7
0xE8
0xE9
0xEA
0xEB
0xEC
0xED
0xEE
0xEF
0xF0
0xF1
0xF2
0xF3
0xF4
0xF5
0xF6
0xF7
0xF8
0xF9
0xFA
0xFB
0xFC
0xFD
0xFE
0xFF All of the above[/spoiler]

[spoiler=AI Byte 4]0x00 Nothing Specific
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0x08
0x09
0x0A
0x0B
0x0C
0x0D
0x0E
0x0F
0x10
0x11
0x12
0x13
0x14
0x15
0x16
0x17
0x18
0x19
0x1A
0x1B
0x1C
0x1D
0x1E
0x1F
0x20 Stand Still (Do not pursue)
0x21
0x22
0x23
0x24
0x25
0x26
0x27
0x28
0x29
0x2A
0x2B
0x2C
0x2D
0x2E
0x2F
0x30
0x31
0x32
0x33
0x34
0x35
0x36
0x37
0x38
0x39
0x3A
0x3B
0x3C
0x3D
0x3E
0x3F
0x40
0x41
0x42
0x43
0x44
0x45
0x46
0x47
0x48
0x49
0x4A
0x4B
0x4C
0x4D
0x4E
0x4F
0x50
0x51
0x52
0x53
0x54
0x55
0x56
0x57
0x58
0x59
0x5A
0x5B
0x5C
0x5D
0x5E
0x5F
0x60
0x61
0x62
0x63
0x64
0x65
0x66
0x67
0x68
0x69
0x6A
0x6B
0x6C
0x6D
0x6E
0x6F
0x70
0x71
0x72
0x73
0x74
0x75
0x76
0x77
0x78
0x79
0x7A
0x7B
0x7C
0x7D
0x7E
0x7F
0x80
0x81
0x82
0x83
0x84
0x85
0x86
0x87
0x88
0x89
0x8A
0x8B
0x8C
0x8D
0x8E
0x8F
0x90
0x91
0x92
0x93
0x94
0x95
0x96
0x97
0x98
0x99
0x9A
0x9B
0x9C
0x9D
0x9E
0x9F
0xA0
0xA1
0xA2
0xA3
0xA4
0xA5
0xA6
0xA7
0xA8
0xA9
0xAA
0xAB
0xAC
0xAD
0xAE
0xAF
0xB0
0xB1
0xB2
0xB3
0xB4
0xB5
0xB6
0xB7
0xB8
0xB9
0xBA
0xBB
0xBC
0xBD
0xBE
0xBF
0xC0
0xC1
0xC2
0xC3
0xC4
0xC5
0xC6
0xC7
0xC8
0xC9
0xCA
0xCB
0xCC
0xCD
0xCE
0xCF
0xD0
0xD1
0xD2
0xD3
0xD4
0xD5
0xD6
0xD7
0xD8
0xD9
0xDA
0xDB
0xDC
0xDD
0xDE
0xDF
0xE0
0xE1
0xE2
0xE3
0xE4
0xE5
0xE6
0xE7
0xE8
0xE9
0xEA
0xEB
0xEC
0xED
0xEE
0xEF
0xF0
0xF1
0xF2
0xF3
0xF4
0xF5
0xF6
0xF7
0xF8
0xF9
0xFA
0xFB
0xFC
0xFD
0xFE
0xFF All of the above[/spoiler]

And while we're on the topic of AI, I'd like to give you guys a list of AI combinations. AI combinations are combinations of AI bytes that create a desired effect.
[spoiler=AI Combos]0x00 0x04 0x01 0x00 - Destroy Village
0x06 0x0B 0x0A 0x00 - Talk to main lord
0x00 0x03 0x00 0x20 - Do not move and attack only when next to unit (defending bosses)
0x06 0x05 0x09 0x00 - Steal from chests
0x10 0x05 0x09 0x00 - Steal from units
0x00 0x03 0x09 0x00 - Attack enemies only within range

NOTES: The ability to destroy villages isn't locked to class. You could have any character of any class destroy a village.
[/spoiler]

You must create units in groups. The unit group will be loaded together so keep that in mind when grouping them together. A unit group must begin with the following:
[code](Unit group name):
UNIT........[/code]

The name can be anything you choose. You end a group of units with:
[code]UNIT Empty[/code]

Without the above code the game would keep loading data. For the game that code separates groups. The game only knows to stop loading when it reaches the end of a group.

Once you've got your units all created you're going to need to get them onto the map. The command to load units is:
[code]LOU1 (Name of unit group)
ENUN[/code]
Always place the ENUN code after loading or moving units.

For an example I'll show you guys a unit group from FE4A.
[code]Chalphy:
UNIT Sigurd Knight_lord 0x00 Level(5,Ally,False) [34,09] [34,12] [Iron_sword,Iron_lance] [00000000]
UNIT Alec Cavalier Sigurd Level(2,Ally,False) [34,09] [35,11] [Iron_sword,Vulnerary] [000000000]
UNIT Noish Cavalier Sigurd Level(3,Ally,False) [34,09] [33,11] [Steel_sword] [000000000]
UNIT Empty[/code]

Did you notice that instead of using hex values I used actual names? This is an advanced feature of the assembler that I will cover that in the next section.

You can load an infinite number of groups with one LOU1 command. However, four per LOU1 is strongly recommended for the readability of your events.
[code]LOU1 Group1 Group2 Group3 Group4[/code]
When loading more than four groups just make a new LOU1 command below and continue. Remember to put ENUN once all your unit groups are loaded!

[center][size=5][b]User-defined Variables[/b][/size][/center]

Recall a few chapters back, when instructing you on building the structure for your events, I told you to include this in your file always.
[code]#include EAstdlib.event[/code]

That file comes with the Event Assembler. It contains a plethora of macros and definitions for you to use. It contains a lot of data you don't really need, but there are some gems for ordinary non-Super Genius people like us. The definitions are what I'm looking at. Nintenlord has been nice enough to provide some default definitions for us. He has defined every item, character and class for all three games. Now, this is fine and dandy but being restricted to the definitions for the GBA games limits our ability to be creative. So I'm going to show you how to make your own definitions file.

Make a new .txt file, name it whatever you desire. For the purposes of this tutorial I will be demonstrating with 'definitions.txt'

Open up your newly created text file, it is (hopefully) blank.

The to make the definitions we need to write the following code.
[code]#define (name) (value)[/code]

The name is the word you want to define and the value is the value in hex. Here's a sample from my 'FE4A_definitions.txt' file.
[code]#define Sigurd 0x03[/code]

Now you can define until your face turns blue. But all that defining is rather useless when you can't use the definitions! So now you need to learn how to use them in your events. Just insert this into your events underneath "#include EAstdlib.event".

[code]#include "(file name)"[/code]

For my example I will be using definitions.txt.

[code]#include "definitions.txt"[/code]

Remember, the file can be named whatever you like. Have fun defining! It makes the life of an event maker much MUCH easier.

[size=5][center][b]Location Events[/b][/center][/size]
Now that we've got a strong hold on the basic setup and the things that makeup the events themselves, it's time to start working on our types of events. This lesson will focus on location based events.

Now, before we get started into location events there is a very important concept I need to go over. This concept is the event number. Each even that is placed in one of the four types is labeled with an event number. Each event must have a different number than another event in the event file. Unless you want to have a "pick your poison" type of event. You could...oh say give two recruitment conversations the same event number. You recruit one of the characters but then you cannot recruit the other (like Johan and Johalva in FE4). It is reccomended that you put your event number in hex instead of a normal number (a.k.a. 0x05 instead of 05).

And now unto the location events! The most common location event I find myself using is the village event, which goes something like this...
[code]Village(event#,nameofevent,x-coordinate,y-coordinate)[/code]
The nameofevent works exactly the same as referencing a unit group.

Here's an example for you.
[code]Village(0x24,South_village,14,33)[/code]

In addition to villages, we also have houses which can be revisited.

[code]House(event#,nameofevent,x-coordinate,y-coordinate)[/code]
Very similar to the setup for a village.

Now, another one that gets a lot of use from me is the seize command.
[code]Seize(event#,nameofevent,x-coordinate,y-coordinate)[/code]
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:
[code]Sieze(event#,x-coordinate,y-coordinate)[/code]

Another fun location event is a Treasure Chest. There are two different formats you can use for a chest event. A chest where you get an item or a chest where you get money.

[code]Chest(item,X-coordinate,Y-coordinate)
ChestMoney(amountOfMoney,X-coordinate,Y-coordinate)[/code]
Its as simple as that!

Now comes the door event.
[code]Door(X-coordinate,Y-coordinate)[/code]

And the last major location event I'll be teaching is the shop event.
[code]Armory(pointertoshopdata,x-coordinate,y-coordinate)[/code]

Now, this one differs a bit. The pointer to the shop data will not be within the event file. And so, you have to use a pointer you make yourself to point to. For example I put my shop data at 0xD80000, my code would look like this.
[code]Armory(0xD80000,x-coordinate,y-coordinate)[/code]

There are multiple types of shops in the game. For an item shop replace 'Armory' with 'Vendor', for a Secret Shop replace 'Armory' with 'SecretShop'.

However, there is (of course) a way to do this in the assembler. You start off with an ID (@____ for you slow learners out there) and then use the code
[code]SHLI (items)[/code]

You can have as many items as you want, put them hex values or defined variables. For example...
[code]SHLI 0x01 0x02 0x03 0x04 0x05[/code]
[code]SHLI IronSword SlimSword SteelSword SilverSword IronBlade[/code]

[center][size=5][b]Character Events[/b][/size][/center]
One of my favorite event types, character events. Now, character events are 'Talk' commands on the battlefield. Selecting the 'Talk' command initiates a conversation between the characters (something I've used a lot in FE4 Advance). Here's the format for a basic character event

[code]CHAR (event#) (name of event) (initiating char) (receiving char) (condition)[/code]

Some of this should look familiar. Event number is still the same thing and the pointer works exactly the same. What's new here are the initiating and receiving characters. The initiating character, when moved next to the receiving character, has the 'Talk' command. The receiving character only receives the conversation, he/she can never initiate it. Pretty simple, right? The biggest new thing is condition. Just ignore that for now (you can use $0000000 for where the condition is supposed to be) as conditions will be covered in a later lesson.

This piece of code goes in the "Character_events" part of the POINs. Just place it under "Character_events:" and you're good to go. Remember to end that section with $00000000!

Here's an example from FE4A:

This is the Character_events table. It contains all my character events. The bolded character event is used in an example below.
[quote]Character_events:
CHAR 0x0E Alvis_and_Sigurd Alvis Sigurd 0x00
CHAR 0x0E Alvis_and_Sigurd Sigurd Alvis 0x00
CHAR 0x13 Alec_and_Ethlin Alec Ethlin 0x00
[b]CHAR 0x0F Sigurd_and_Ethlin Ethlin Sigurd 0x00[/b]
CHAR 0x10 Lex_and_Sigurd Lex Sigurd 0x00
CHAR 0x10 Azel_and_Sigurd Sigurd Azel 0x00
CHAR 0x11 Cuan_and_Sigurd Cuan Sigurd 0x00
CHAR 0x11 Cuan_and_Sigurd Sigurd Cuan 0x00
CODE $00000000[/quote]

[quote]Sigurd_and_Ethlin:
MUS1 0x3D //line 338
TEX1 0x0823
REMA
MUEN 0x05
ENDA[/quote]

[size=5][center][b]Turn Events[/b][/center][/size]
The basic format for turn events is:
[code]TURN (event#) (name of event) [starting turn,ending turn] (phase) 0x00[/code]

This looks somewhat familiar, right? I hope you're starting to get the concept of (event#) and (name of event). If you aren't I strongly suggest becoming familiar with those concepts before advancing further in the tutorial.

For (event#) you will almost always use 0. Turn events cannot repeat, therefore you should use 0.

Starting turn is the turn the event starts on. Ending turn is the turn the events end on. If you want the event to last 1 turn then have both values be the same. If you want it to span multiple turns (useful for reinforcements) then make them different values.

The phase is determined by 3 values only. 0x00 denotes Player Phase. 0x08 denotes Enemy Phase. 0x16(?) denotes Neutral Phase.

Here's my example. 5 turns of enemy reinforcements would be:

[code]TURN 0 Reinforcements [10,15] 0x08 0x00[/code]
[code]Reinforcements:
LOU1 Reinfocement_units
ENUN
ENDA[/code]

This turn event starts on turn 10 and ends on turn 15, providing 5 turns of enemy reinforcements.

The TURN command goes under the "Turn_events" section of your file. Here's an example of my Turn_events section from Chapter 1 of FE4A.

[quote]Turn_events:
TURN 0 Turn_twenty_five [30,00] 0x00 0x00 //Turn 25 Event (marks Ch. 1x)
TURN 0 Turn_two [02,00] 0x00 0x00 //Jamka and Eden event
TURN 0 Reinforcements [10,10] 0x08 0x00 //Reinforcements event
TURN 0 Opening_event [01,00] 0x00 0x00 //Opening event
CODE 0x00[/quote]

An important thing to note: I included my opening event in the Turn_events area. Why did I do this if Opening Event is already specified with the POINs? My Chapter 1 does not utilize the Preparations Screen. For chapters that do not use the Prep Screen you must include the opening event in the Turn_events area. For your opening event is must start before the Player's Phase of Turn 1.

[center][size=5][b]Ballistae[/b][/size][/center]
Prepare yourself to tackle the shortest lesson of this tutorial. This one is even smaller than the last. Ballistae events look like this:
[code]BLST (coordinates) (type)[/code]

The types are
[code]34 = Normal Ballista
35 = Iron Ballista
36 = Killer Ballista[/code]

And coordinates work the same as they always do. Just make sure all your Ballista events are under the "Ballista:" section and you're good to go.

A list of BLST events should end in BLST (with nothing else written).

Example:
[code]BLST [01,05] 34
BLST [01,06] 35
BLST [01,04] 35
BLST
ALIGN 4
CODE $00[/code]

Notice something else, I used ALIGN 4. I strongly recommend putting this at the end of your Ballista lists under the blank BLST. It helps keep the data aligned properly, which means less headaches for you!

[center][size=5][b]Misc. Events[/b][/size][/center]
Now, misc. events are tricky little guys. They don't follow any particular pattern or event do the same thing. One command is completely different from another.

The most common Misc. event is the Game Over command, which allows you to be defeated.

[code]CauseGameOverIfLordDies[/code]

Then another common one is the area event, like the hidden treasure in the desert.

[code]AREA (event number) (name of event) (starting coordinate) (ending coordinate)[/code]

Starting coordinate and ending coordinate are the only new things. The two sets of coordinates together create a range where the area event can happen. If you want it to be only one tile on the map then just have the two sets of coordinates the same. I compared this event to the desert chapters. However it doesn't automatically base the activation rate off luck unless you specify it (which will be covered in the lesson on conditions).

Another commonly used one is the command for Route missions
[code]DefeatAll(name of ending event)[/code]

And then there's the command for missions where you must kill the boss.
[code]DefeatBoss(name of ending event)[/code]

And that's all there is to know. Here's an example of a Misc_events area.
[quote]Misc_events:
CauseGameOverIfLordDies
DefeatBoss(ending_event)
AREA 0x26 Marpha_siezed [26,24] [26,27] //Game over if castle siezed command
CODE 0x00[/quote]

[center][b][size=5]Text[/size][/b][/center]
I'm not going to spend much time on text. Consider this a mini-chapter. There are already tutorials that teach text editing so its a a waste of time to make another for this tutorial.

I personally still use Darktwiliktri's Text Editing Suite for text editing, however, any method will produce the same results. Here's the basic rundown with the Text Editing Suite. In FE7 all the in-game conversations start at 0x0815, you can just start there. (that's the pointer you'd use for TEX1) The easiest way to insert text is to just go from that pointer onward (0x0816, 0x0817, etc.) and then play your chapter to find out what that text slot actually contains. Then find the text in the alltext file and edit to your heart's content.

When using Xeld's FEditor Adv there's an easier way. In the index selection reel type in 815 and that will land you at the first text slot in the game. The numbers in the index selection are the digits for the offset; text slot 815 will be 0x0815. 450 would be 0x0450. Get the picture?

[size=5][center][b]Conditions[/b][/center][/size]
Alright, this is where we can add depth to our events.

If you'll remember, with the character events there was a slot for conditions. The only condition usable for character events is making the event only happen after another event has occurred.
[code]00XX0003

XX = Event number[/code]

Now, that one teeny tiny taste of conditions. It is [b]nothing[/b] compared to what will be covered in this chapter.

Alright, our first major concept for this chapter is the condition number. The condition number is the number of the condition. It's the same idea as event numbers. No two conditions should have the same condition number.

Lets start learning conditions by learning a condition. Fantastic idea, no? We'll start with one of my personal favorites, the "if certain character" condition.
[code]IFCA (Condition number) (Character)[/code]

Now, lets get an event. To save myself some time I'll take on from my hack, Fire Emblem 4 Advance.

This is when Lex gets his Hero Axe from the lady of the lake (who looks suspiciously similar to Queen Rahna of Silesia but that's another problem for another day).
[code]TEX1 0x0949
REMA
ITGV 0x2C 0x22
ENDA[/code]

Now, I'm obviously going to add a condition which makes it so this only happens when Lex (0x2C) steps on the tile.

[code]IFCA 0x01 0x2C
TEX1 0x0949
REMA
ITGV 0x2C 0x22
ENDA[/code]

But wait... slight problem. What if someone ELSE steps on the tile? Well, the event will still go off which means the event won't happen for Lex if he steps on the tile after the other unit because the event was set to off mode. Well, first off we need to specify what happens when another character steps on the tile. We use the "ELSE" command for this one. There's nothing fancy attatched to this code. Then under ELSE we say what we want to happen. In my case I want to reset the even number so if a unit other than Lex steps on the tile, the event will still happen for Lex.

I do this with this little baby.
[code]ENUT (EVent #)[/code]

Of course, you could always do the opposite and disable an event if something happens.
[code]ENUF (Event #)[/code]


And my end result should come out looking like this.

[code]IFCA 0x01 0x2C
TEX1 0x0949
REMA
ITGV 0x2C 0x22
ENDA
ELSE 0x02
ENUT 0x17
ENDA[/code]

But wait! It seems I've forgotten something... what could it be? Bah... I just can't... AHA!!! ENIF!!! You must be going "wtf?" but we need to include the something called the ENIF command. ENIF stands for "ENd of IF statement". Basically, when all your possible conditions are done you put an ENIF there and then follow it up with ELSE.

So, the correct code for Lex's Brave Axe is.

[code]IFCA 0x01 Lex
TEX1 0x0949
REMA
ITGV 0x2C 0x22
ENDA
ELSE 0x02
ENIF 0x01
ENUT 0x17
ENDA
ENIF 0x02[/code]

Now, there are many conditions you could attach to an event.

If certain turn. Like in FE6, to reach a Gaiden chapter you had to complete the chapter before a certain turn.
[code]IFTU (condition number) (turn)[/code]

If a character is dead is another popular one. Say I kill off a character that has a line later in the game. Can't have him come back from the dead for his line now can we?
[code]IFCD (condition number) (character to be dead)[/code]

If you bring a character into a battle and want to throw them a line make sure you use this one which checks if the unit is fielded or not. (like how Guy complains he's seasick on the Pirate Ship chapter)
[code]IFUF (condition #) (unit)[/code]

Another one is having the game check to see if a certain event happened.
[code]IFEV 0xII 0xVV[/code]

There's also a way to make an event dependant on a Yes/No choice given to the player. (like choosing to go on a sidequest)
[code]IFYN (condition #)[/code]

Now, the actual Yes/No option is created in the text with

And then there's the most dreaded condition of all. The Tutorial Mode condition. Yes, this one four letter command is responsible for all those boring tutorials you have to sit through. That four letter command is...
[code]IFTT (condition number)[/code]

And while we're checking modes, here's one that checks if you're in Eliwood's Mode or not. Personally I found if odd that the programmers chose to base mode events off whether it was Eliwood's mode or not since Hector's mode is the one with the bonus content but whatever...
[code]IFEM (condition #)[/code]

Congratulations, if you understood all that you have officially risen beyond the rank of chapter making noob! Give yourself a pat on the back and brace yourself for the next chapter.

[size=5][center][b]In-Chapter Events[/b][/center][/size]
Alright, we've got most of our stuff down. These are events I've dubbed "In-Chapter Events" because they are best used during a battle. But, you can use them in any scene.

The first one I'll cover is weather. You can change the weather mid-chapter with this baby.
[code]WEA1 (weather)[/code]

And what kind of tutor would I be without providing you with a list of possible weather effects and the value to imput to get them?
[spoiler=Weather]0x00 Normal
0x01 Snow
0x02 Snowstorm
0x03 Blue Background
0x04 Rain
0x05 Fiery Glow
0x06 Sandstorm
0x07 Moving Clouds Background[/spoiler]

And then there's the ever-so-popular Fog of War.
[code]VCBF (vision distance) //black fog
VCWF (vision distance) //white fog[/code]

The default vision distance in FE7 is __. If you want to disable Fog of War at a later time then just enter the code again and have your value as 0x00.

Now, for what is probably the most important one, the command to end the chapter and move unto the next.
[code]MNCH (chapter number of next chapter)[/code]

You can change the AI of a unit in the middle of a chapter with
[code]CHAI (character) $(AI Code)[/code]
The AI commands are located in the unit making chapter.

[size=5][center][b]More Scenic Events[/b][/center][/size]
We covered scenic events in the beginning. However we only scratched the surface. I wanted to ease you into events so I left out the extra stuff for later.

Now, here's a code that I admit I just plain forgot about. It makes the cursor flash on a tile.
[code]CURF (coordinates)[/code]

Another one that I just plain forgot about is the ability to make a unit reappear after disappearing.
[code]REPA (character)[/code]

So, now that we've gotten past all the things I forgot about. The first topic I'd like to cover in this chapter is music. There's more than just loading music you know.

First there are sound effects which are loaded with
[code]SOUN (sound effect)[/code]

And then there's volume control codes.
[code]MUSI //makes music more silent
MUNO //makes music normal after MUSI[/code]

They have no parameters.

Now, the next topic is move events. We already covered the basic move event but there are quite a few variations.

The first variation is move to a character.
[code]MOVE (character) [1,2][/code]

At the end of a MOVE code you can also add the speed the character is moving at.

[spoiler=Movement speed]0x00 Normal
0x01 Slow[/spoiler]

For example...
[code]MOVE 0x03 [1,2] 0x01[/code]

And then there's the ever so popular fight sequence.
[code]FIGH (attacker) (defender) (pointer to fight) $00000000[/code]

The fight code works like this.

[code]CODE $XX000000
Normal attack command.
XX = Damage

CODE $XX000001
Critical command.
XX = Damage

CODE $XX000002
Attack but miss.
XX = Damage

CODE $XX000040
Attack that poisons.
XX = Damage

CODE $XX008000
Instant kill (damage does not matter).
XX = Damage

CODE $00800000
End the battle sequence.

NOTE: These commands were created for the attacking character by default. To make a defending character attack replace the second pair of numbers with 08. For example instead of $XX000000 for an attack I would use $XX080000 to have the defender attack.[/code]

The damage needs to be in hex. As an example.

[code]CODE $20000000
CODE $00800000[/code]

The attacker attacks for 32 damage and then the battle ends. Now, you only get one attack per fight sequence. If you want the person attacked to counter you need to create another FIGH event and swap the attacker and defender.

Now, say you want a healing event. Create a FIGH event between two allies and do a normal attack command. For the damage FF = -1, FE = -2 and so on and so forth. This trend goes all the way down to 80 which is -123.

After the fight is finished, you may need to kill the loser right? Well, this little code takes care of that.
[code]KILL (character) //kills a certain character
KILL (coordinates) //kills a character on a tile[/code]

Now, a fight sequence can occur between any two units, their alliance (Ally, Enemy or Neutral) does not matter.

So there we have it. Now that you've finished this chapter you officially know how to do anything you could ever want to do in a chapter. Give yourself a pat on the back.

[center][b][size=5]FE8 differences[/size][/b][/center]
This tutorial has been dealing with FE7's events. Since FE7 is the most popular game for hacking I figured it would be advantageous to do so. Out of the three games, FE8 is definitely the oddball of the trio.

[b]Preparations Screen[/b]
In FE8, ENDB doesn't exist. Instead you must use
[code]GotoPrepScreen[/code]
This ends the event and sends you to the Prep Screen.

[b]Cursor Events[/b]
In FE8, the commands regarding the cursor are also different.
[code]FlashCursor(X,Y,time)[/code]
This flashes the cursor on a specific tile.
[code]FlashCursor(character,time)[/code]
This flashes the cursor on a specific character.

For both commands the recommended time is 60 (the same time it takes for a cursor flash in FE6 or FE7)

[b]Units[/b]
FE8 also structures the UNIT command differently.
[code] UNIT (Unit value) (Class) (Leader) (Starting Level) (Coordinates, [XX,YY]) (Flags) (Byte1) (Amount) (Reinforcement pointer) [(Item1),(Item2),(Item3),(Item4)] [(AI byte1)(AI byte2)(AI byte3)(AI byte4)][/code]
The difference is the added information for the units. 'Flags' have various uses which are, as of yet, largely unexplored. We do know that 2 makes the last item dropable. 'Byte1' is mysterious also, we do not know its function. Most units, however, simply have 0x00 as 'Byte1.' Now, I'm going to be honest; I couldn't teach you about 'Amount' and 'Reinforcement pointer.' FE8 events are not my forte. I'm looking to add more information on this later, if anyone can help me it would be greatly appreciated. Basically the Reinforcement pointer points to an event which moves the unit after they are loaded. This works similarly to FE7's loading and starting coordinates.

A Reinforcement Pointer event would be structured like this:
[code]REDA [X,Y] (Speed) (Rescuing character) (Delay before executing)[/code]
Coordinates work as they normally would, the unit will move to those coordinates. 'Delay before executing' can be any numerical value. The higher the number the longer the delay. The rescuing character is the ID of the unit the character would rescue when moving. It can be left as 0x00 if you don't want the unit to rescue anybody when performing this event.

[b]Unit Alliance[/b]
Also regarding units, FE8 has a different way of changing a unit's alliance. Instead of one command we have three.
[code]CUSA (character) //to ally (blue)
CUSE (character) //to enemy (red)
CUSN (character) //to neutral (green)[/code]

[b]Text[/b]
FE8's text also works differently. In FE7 you would just use this.
[code]TEX1 (text)
REMA[/code]
However, FE8 requires something else to be added.
[code]TEX1 (text)
GOTO $9EE310
REMA[/code]

[b]POINs[/b]
One of the biggest differences is how POINs are structured.

[code]POIN TurnBasedEvents
POIN CharacterBasedEvents
POIN LocationBasedEvents
POIN MiscBasedEvents
POIN Dunno Dunno Dunno
POIN Tutorial
POIN Ballisa1 Ballista2
POIN Units1 Units1
POIN $0 $0 $0 $0 $0 $0
POIN BeginningScene EndingScene[/code]

[center][b][size=5]FE6 differences[/size][/b][/center]
FE6's events are largely similar to FE7's. The biggest difference is the POINs.

[code]POIN TurnBasedEvents
POIN CharacterBasedEvents
POIN LocationBasedEvents
POIN MiscBasedEvents
POIN EnemyUnits AllyUnits
POIN EndingScene[/code]

You'll notice that there is no pointed to an opening event. Opening events are always handled as a turn event occurring before the Player's Phase of Turn 1. For example:

[code]TURN 0x0 Opening_event [1,0] 0x0[/code]
This is the Opening event of FE6's Chapter 1.

[center][b][size=5]The Final Battle[/size][/b][/center]
With the knowledge of making events obtained, there remains one final challenge. Luckily, like Idoun in FE6, the final challenge is relatively easy. If, however, you are using this code:

[code]org 0xC9C9C8+(4*0x??) //FE7
org 0xB363C+(4*0x??) //FE8[/code]

you don't need to read the rest of this chapter! Instead, just use the two lists I included with spoilers, pick a slot, then assemble the events. However, if for some reason you don't want to do that, here's how one would do it manually. You will probably want to read this so you can point to maps (since we don't have a super easy way to do that yet).

Since we already know how to insert maps and events we'll need to get the offsets where they were written. Make sure that you keep track of where a piece of data ends so that you don't accidentally overwrite it later on down the road. As an example my events are written at 0xD80000 and my map is at 0xDA0000. Now, this is the part that requires us to open up a Hex Editor. Now, the event pointer table (a table which pointes to all the events/maps/tilesets in the ROM) is where we need to go. That table starts at offset 00C9C9CC so use the Goto function of your hex editor and type in that offset. Now, what you'll see if a bunch of numbers, these numbers are pointers which point to various things in the game.

Nintenlord made excellent documentation of the C9C9CC table.
[spoiler=Nintenlord's Notes]0x00 None
0x01 ObjectSets: Sacae Plains
0x02 Palette: Sacae Plains: Light Sand
0x03 Set confic: Sacae Plains
0x04 Prologue Map
0x05 Animation: Water (Fields; Plains; M&S)
0x06 Prologue Events
0x07 Palette: Sacae Plains: Dark Sand
0x08 Ch.1 Map
0x09 Ch.1 Events
0x0A ObjectSets: Plains&Castle
0x0B Palette: Plains&Castle: Bright
0x0C Set config: Plains&Castle
0x0D Ch.2 Map
0x0E Ch.2 Map Tile change
0x0F Ch.2 Events
0x10 ObjectSets: Town&Docks
0x11 Palette: Town: Cliffs&stone road unusable
0x12 Set config: Town&Docks
0x13 Ch.3 Map
0x14 Ch.3 Map Tile change
0x15 Ch.3 Events
0x16 ObjectSets: Fortress&Fields
0x17 Palette: Fortress&Fields: Dawn
0x18 Set config: Fortress&Fields
0x19 Ch.4 Map
0x1A Ch.4 Map Tile change
0x1B Ch.4 Events
0x1C ObjectSets: Fields
0x1D ObjectSets: Fields
0x1E Palette: Fields: Sunny weather
0x1F Set config: Fields
0x20 Ch.5 Map
0x21 Ch.5 Events
0x22 Palette: Town: Cliffs&ship unusable
0x23 Ch.6 Map
0x24 Ch.6 Map Tile change
0x25 Ch.6 Events
0x26 Ch.7 Map
0x27 Ch.7 Map Tile change
0x28 Ch.7 Events
0x29 Palette: Plains&Castle: Neutral
0x2A Ch.7x Map
0x2B Ch.7x Map Tile change
0x2C Ch.7x Events
0x2D Ch.8 Map
0x2E Ch.8 Map Tile change
0x2F Ch.8 Events
0x30 Ch.9 Map
0x31 Ch.9 Map Tile change
0x32 Ch.9 Events
0x33 Palette: Fields: Darker; suitable for rain
0x34 Ch.10 Map
0x35 Ch.10 Map Tile change
0x36 Ch.10 Events
0x37 Ch.11E Map
0x38 Ch.11E Map Tile Change
0x39 Ch.11E Events
0x3A Palette: Plains&Castle: Castle Ostia/Laus
0x3B Ch.11H Map
0x3C Ch.11H Map Tile Change
0x3D Ch.11H Events
0x3E Ch.12 Map
0x3F Ch.12 Map Tile change
0x40 Ch.12 Events
0x41 Ch.13 Map
0x42 Ch.13 Map Tile change
0x43 Ch.13 Events
0x44 Palette: Fields: Night
0x45 Ch.13x Map
0x46 Ch.13x Map Tile change
0x47 Ch.13x Events
0x48 Palette: Fields: Darker; suitable for rain
0x49 Ch.14 Map
0x4A Ch.14 Map Tile change
0x4B Ch.14 Events
0x4C Ch.15H Map
0x4D Ch.15H Map Tile change
0x4E Ch.15H Events
0x4F Ch.15/16 Map
0x50 Ch.15/16 Map Tile change
0x51 Ch.15/16 Events
0x52 Palette: Plains&Castle: Castle Caelin
0x53 Ch.16/17 Map
0x54 Ch.16/17 Map Tile change
0x55 Ch.16/17 Events
0x56 Palette: Town: Ship&stone road unusable
0x57 Ch.16x/17x Map
0x58 Animation: Water (Town&Docks)
0x59 Ch.16x/17x Map Tile change
0x5A Ch.16x/17x Events
0x5B ObjectSets: Ship
0x5C Palette: Ship
0x5D Set config: Ship
0x5E Ch.17/18 Map
0x5F Animation: Water (Ship)
0x60 Ch.17/18 Map Tile Change
0x61 Ch.17/18 Events
0x62 Palette: Fields: Dull; suitable for fog
0x63 Ch.18/19 Map
0x64 Ch.18/19 Map Tile change
0x65 Ch.18/19 Events
0x66 Palette: Fields: Sunny weather
0x67 Ch.18x/19x Map
0x68 Ch.18x/19x Map Tile change
0x69 Ch.18x/19x Events
0x6A ObjectSets: Mountains&Shrine
0x6B Palette: Mountains&Shrine: Neutral
0x6C Set config: Mountains&Shrine
0x6D Ch.19x pt2 Map
0x6E Ch.19x pt2 Map Tile changes
0x6F Ch.19x pt2 Events
0x70 Ch.19/20 Map
0x71 Ch.19/20 Map Tile changes
0x72 Ch.19/20 Events
0x73 Palette: Town: Night
0x74 Ch.20/21 Map
0x75 Ch.20/21 Map Tile changes
0x76 Ch.20/21 Events
0x77 Palette: Fortress&Fields: Daytime
0x78 Ch.21/22 Map
0x79 Ch.21/22 Map Tile changes
0x7A Ch.21/22 Events
0x7B ObjectSets: Desert
0x7C Palette: Desert
0x7D Set config: Desert
0x7E Ch.22/23 Map
0x7F Ch.22/23 Events
0x80 Palette: Plains&Castle: Green&blue
0x81 Ch.22x/23x Map
0x82 Ch.22x/23x Map Tile changes
0x83 Ch.22x/23x Events
0x84 Ch.23/24 Map (Lloyd)
0x85 Ch.23/24 Map (Lloyd) Tile changes
0x86 Ch.23/24 (Lloyd) Events
0x87 Ch.23/24 Map (Linus)
0x88 Ch.23/24 Map (Linus) Tile changes
0x89 Ch.23/24 (Linus) Events
0x8A Palette: Fields: Neutral
0x8B Ch.25H Map
0x8C Ch.25H Map Tile changes
0x8D Ch.25H Events
0x8E Ch.24/26 Map
0x8F Ch.24/26 Map tile changes
0x90 Ch.24/26 Events
0x91 ObjectSets: Snow
0x92 Palette: Snow
0x93 Set confic: Snow
0x94 Ch.25/27 Map (Kenneth)
0x95 Ch.25/27 Map (Kenneth) Tile changes
0x96 Ch.25/27 (Kenneth) Events
0x97 Ch.25/27 Map (Jerme)
0x98 Animation: Shimmering ice (Snow)
0x99 Ch.25/27 Map (Jerme) Tile change
0x9A Ch.25/27 (Jerme) Events
0x9B Palette: Plains&Castle: Night
0x9C Ch.26/28 Map
0x9D Ch.26/28 Map Tile change
0x9E Ch.26/28 Events
0x9F Palette: Plains&Castle: Purple
0xA0 Ch.26x/28x Map
0xA1 Animation: Water (Plains&Castle)
0xA2 Ch.26x/28x Map Tile changes
0xA3 Ch.26x/28x Events
0xA4 Ch.27/29 Map
0xA5 Ch.27/29 Map Tile changes
0xA6 Ch.27/29 Events
0xA7 ObjectSets: Lava Cave
0xA8 Palette: Lava Cave
0xA9 Set config: Lava Cave
0xAA Ch.28E Map
0xAB Animation: Lava (Lava Cave)
0xAC Ch.28E Map
0xAD Ch.28E Events
0xAE ObjectSets: Sand Cave
0xAF Palette: Sand Cave
0xB0 Set config: Sand Cave
0xB1 Ch.30H Map
0xB2 Ch.30H Map Tile changes
0xB3 Ch.30H Events
0xB4 Ch.29/31 Map
0xB5 Ch.29/31 Map Tile change
0xB6 Ch.29/31 Events
0xB7 Palette: Town: Ship&stone road unusable
0xB8 Ch.29x/31x Map
0xB9 Ch.29x/31x Events
0xBA Ch.30/32 Map
0xBB Ch.30/32 Map Tile Changes
0xBC Ch.30/32 Events
0xBD Palette: Mountains&Shrine: No plains
0xBE Ch.32x Map
0xBF Ch.32x Map Tile changes
0xC0 Ch.32x Events
0xC1 ObjectSets: Dragon's Gate
0xC2 Palette: Dragon's Gate
0xC3 Set config Dragon's Gate
0xC4 Final Ch. pt1 Map
0xC5 Animation: Gate and flames (Dragon's Gate)
0xC6 Final Ch. pt1 Map Tile change
0xC7 Final Ch. pt1 Events
0xC8 Final Ch. pt2 Map
0xC9 Final Ch. pt2 Map Tile change
0xCA Final Ch. pt2 Events
0xCB [3642E8]
0xCC [CE3A60] Tile change
0xCD [CA6890]
0xCE [36423C]
0xCF [CA68F0]
0xD0 [364108]
0xD1 [CA6950]
0xD2 [363FE4]
0xD3 [CA69B0]
0xD4 [366678]
0xD5 [363E80]
0xD6 [CA6A10]
0xD7 [363D2C]
0xD8 [CA6A70]
0xD9 [360538]
0xDA [363C58]
0xDB [CA6AD0]
0xDC [363B7C]
0xDD [CA6B30]
0xDE [363A38]
0xDF [CA6B90]
0xE0 [3603F8]
0xE1 [363900]
0xE2 [CA6BF0]
0xE3 [363800]
0xE4 [CA6C50]
0xE5 [3636F4]
0xE6 [CA6CB0]
0xE7 [3602B8]
0xE8 [3635B0]
0xE9 [CA6D10]
0xEA [363474]
0xEB [CA6D70]
0xEC [363328]
0xDE [CA6DD0]
0xEE [3631C8]
0xEF [CE3B40] Tile change
0xF0 [CA6E30]
0xF1 [3630C0]
0xF2 [362FB8]
[/spoiler]
What his list references as 0x__ is the number on the pointer. Each pointer is ended by 08. So, what he calls 0x01 is 4C C7 34 08, all you have to do is count pointers to end up in the right spot.

For FE8 the table starts at B363C.
[spoiler=B363C Notes]Not used
Object type
Map Palette 1
Tile Configuration
Prologue Map
Tile animations 1
Prologue Map changes
Prologue events
Ch 1 Map
Ch 1 map changes
Ch 1 events
Ch 2 map
Ch 2 Tile changes
Ch 2 events
Object type 2
Map palette 2
Tile configuration 2
Ch 3 map
Tile animations 2
Ch 3 map changes
Ch 3 events
Ch 4 Map
Ch 4 Map changes
Ch 4 events
Object type 3
Map palette 3
Tile confihutation 3
Ch 5x map
Tile animations 3
Ch 5x Map changes
Ch 5x Events
Ch 5 Map
Ch 5 map changes
Ch 5 event data
Ch 6 map
Ch 6 Map changes
Ch 6 events
Ch 7 map
Ch 7 map changes
Ch 7 event data
Ch 8 map
Ch 8 map changes
Ch 8 event data
Ch 9 Eir. map
Ch 9 Eir. map changes
Ch 9 Eir. Events
Object type 4
Map palette 4
Tile configuration 4
Ch 10 Eir. Map
Ch 10 Eir. Map changes
Ch 10 Eir. Events
Map palette 5
Ch 12 Eir. Map
Ch 12 Eir. map changes
Ch 12 Eir. event data
Map palette 6
Ch 13 Eir. Map
Ch 13 Eir. Map changes
Ch 13 Eir. Events (3B)
Object type
Map palette 7
Tile configuration 5
Ch 14 Eir. Map
Ch 14 Eir. Map changes
Ch 14 Eir. Events
Object type 6
Map palette 8
Tile configuration 6
Ch 15 map
Ch 15 Map changes
Ch 15 Eir. events
Map palette 9
Ch 16 Map
Ch 16 Map changes
Ch 16 Eir events
Map palette 10
Ch 17 Map
Ch 17 Map changes
Ch 17 Eir. Events
Object type 7
Map palette 11
Tile configuration 7
Ch 18 Map
Tile animations 4
Ch 18 Map changes
Ch 18 Eir. Events
Map palette 12
Ch 19 Map
Ch 19 Map changes
Ch 19 Eir. Events
Map palette 13
Ch 20 Map
Ch 20 Map changes
Ch 20 Eir. Events
Object type 8
Map palette 14
Tile configuration 8
Final Chapter Map 1
Final Chapter Map 1 changes
Final Eir. events 1
Final Chapter Map 2
Final Chapter Map 2 changes
Final Eirika events 2
Map palette 15
Ch 9 Eph map
Ch 9 Eph Map changes
Ch 9 events
Object type 9
Map palette 15
Tile configuration 9
Ch 10 Ephraim map
Ch 10 Ephraim map changes
Ch 10 Ephraim events
Map palette 16
Ch 11 Ephraim map
Ch 11 Ephraim map changes
Ch 11 Ephraim events
Ch 13 Ephraim map
Ch 13 Ephraim map changes
Ch 13 Ephraim event data
Object type 10
Map palette 17
Tile configuration 10
Ch 14 Ephraim map
Tile animations 5
Ch 14 Ephraim map changes
Ch 14 Ephraim event data
Ch 15 Ephraim event data
Ch 16 Ephraim event data
Ch 17 Ephraim event data
Ch 18 Ephraim event data
Ch 19 Ephraim event data
Ch 20 Ephraim event data
Final Ephraim events 1
Final Ephraim events 2
Tower of Valni Object type
Tower of Valni map palette
Tower of Valni Tile configuration
Tower of Valni 1 Map
Tower of Valni 1 Map changes
Tower of Valni 1 events
Tower of Valni 2 map
Tower of Valni 2 map changes
Tower of Valni 2 events
Tower of Valni 3 map
Tower of Valni 3 map changes
Tower of Valni 3 events
Tower of Valni 4 map
Tower of Valni 4 map changes
Tower of Valni 4 events
Tower of Valni 5 map
Tower of Valni 5 map changes
Tower of Valni 5 events
Tower of Valni 6 map
Tower of Valni 6 map changes
Tower of Valni 6 events
Tower of Valni 7 map
Tower of Valni 7 map changes
Tower of Valni 7 events
Tower of Valni 8 map
Tower of Valni 8 map changes
Tower of Valni 8 events
Lagdou ruins palette
Lagdou ruins 1 Map
Lagdou ruins 1 Map changes
Lagdou ruins 1 Event
Lagdou ruins 2 Map
Lagdou ruins 2 Map changes
Lagdou ruins 2 Event
Lagdou ruins 3 Map
Lagdou ruins 3 Map changes
Lagdou ruins 3 Event
Lagdou ruins 4 Map
Lagdou ruins 4 Map changes
Lagdou ruins 4 Event
Lagdou ruins 5 Map
Lagdou ruins 5 Map changes
Lagdou ruins 5 Event
Lagdou ruins 6 Map
Lagdou ruins 6 Map changes
Lagdou ruins 6 Event
Lagdou ruins 7 Map
Lagdou ruins 7 Map changes
Lagdou ruins 7 Event
Lagdou ruins 8 palette
Lagdou ruins 8 Map
Lagdou ruins 8 Map changes
Lagdou ruins 8 Event
Lagdou ruins 9 Map
Lagdou ruins 9 Map changes
Lagdou ruins 9 Event
Lagdou ruins 10 Map
Lagdou ruins 10 Map changes
Lagdou ruins 10 Event
Lords split map
Lords split map changes
Lords split events
Melkaen Coast map
Melkaen Coast map changes
Melkaen Coast event
Link arena map C9
An interesting map...
An interesting map events...
Debug map
Debug map events
Map palette
Ch 11 Eirika map
Ch 11 Eirika map changes D0
Ch 11 Eirika events
Ch 11 Ephraim map
Ch 11 Ephraim tile animations
Ch 11 Ephraim map changes
Ch 11 Ephraim events
Grado castle map
Renais castle map
Caer Pelyn map
Renais throne map
Renais throne map changes
Renais audience map
Renval gate map
Grado borders map
Grado prison map
Grado prison map changes
Grado shrine map (past)
Grado shrine map changes (past)
Renais shrine map
Renais shrine map changes
Some path map
Some building map
Another shrine palette
Another shrine map
Another path map
Grado shrine map (present)
Ch 5 town palette (past)
Ch 5 town map (past)[/spoiler]

Now, pointers are written in little endian. For those of you who aren't vocabulary savvy (like myself) it basically means that the bytes are reversed. So, my offset for my events is written at 00D80000. In little endian the offset would be 00 00 D8 08. However there's something wrong with that pointer. Every pointer MUST end with a 08. The only exception to this rule is when you expand your ROM past 00FFFFFF in which case you must use 09 to end your offsets. If you do not use 08 or 09 when necessary nothing will work!

So, by counting offsets I've discovered that 20 07 CA 08 is the pointer to the prologue's events in the original game. So, by replacing that with 00 00 D8 08 I successfully point to my new events. The same method applies for maps. Now, when your map is inserted open up the Chapter Data Editor in Nightmare. Go to the correct chapter and alter the Tileset and Tile Palette to get the map looking like it should and your chapter is completely done.

And now, load up your ROM and enjoy the hard work that went into making your custom chapter. You've earned it. Congratulations for completing this tutorial! Now you know how to do anything you could ever possibly want to in a custom chapter so get out there and start making your hacks and showing off your skills! Feedback on this tutorial is greatly appreciated. Were there things that I wasn't clear on? Are there chapters which could be been improved? And if so how? Feedback helps me make the tutorial better for future readers so they won't have to go through the confusion you did and less confusion = more learning. Please PM/IM (my addresses are on my profile page) me your feedback as this topic will be locked.

[center][b][size=5]Conclusion[/size][/b][/center]
Congratulations, reader, for completing this tutorial. You now know how to do most anything you could ever want in a custom chapter. So get out there and start making your hacks and showing off your skills! Feedback on this tutorial is greatly appreciated. Were there things that I wasn't clear on? Are there chapters which could be been improved? And if so, how? Feedback helps me make the tutorial better for future readers so they won't have to go through the confusion you did, less confusion = more learning. Please post your feedback here. Edited by General Archibald

Share this post


Link to post
Share on other sites

This was SUPER helpful. I looked at other event tutorials, but frankly they all made me feel like my brain was melting '^^ This one was really easy to understand and has really motivated me and made me believe in my hack.

Share this post


Link to post
Share on other sites

cool beans, very thorough and something nice to look at

now make one for FE4!

or do I have to do that, sadface

Share this post


Link to post
Share on other sites

am i really going to be the one who points out that this is over 5 years old (this was not originally posted here), and that there's a fourth edition that's already going out of date (for reference, this is the second)

Share this post


Link to post
Share on other sites

am i really going to be the one who points out that this is over 5 years old (this was not originally posted here), and that there's a fourth edition that's already going out of date (for reference, this is the second)

Oh... thank you. This was just the one attached to the Ultimate Tutorial.

Share this post


Link to post
Share on other sites

One problem with one of your links: FEUniverse is showing up as some ad listing site. Post the .us version, .net is the issue

Edited by The Dark Armorknight

Share this post


Link to post
Share on other sites

One problem with one of your links: FEUniverse is showing up as some ad listing site. Post the .us version, .net is the issue

am i really going to be the one who points out that this is over 5 years old (this was not originally posted here), and that there's a fourth edition that's already going out of date (for reference, this is the second)

Share this post


Link to post
Share on other sites

am i really going to be the one who points out that this is over 5 years old (this was not originally posted here), and that there's a fourth edition that's already going out of date (for reference, this is the second)

oops

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.