InvdrZim13 Posted December 8, 2016 Share Posted December 8, 2016 (edited) This guide assumes you are already familiar with the basics of hacking Introduction So there's not really a big post on how to do FE8 eventing (like Arch's super great guide for FE7), and that kinda sucks for people who want to hack FE8 because there's far less resources immediately available for them to use. It's uh, going to be a hell of a WIP until everything is properly covered. But the general idea is to have a resource similar to Arch's chapter construction guide except focused on FE8. I figured as one of the few people hacking FE8 right now I'd try to share some of my knowledge with anyone looking to get into FE8 hacking. That being said, I probably forgot a bunch of stuff so if there's something missing that you want to know about, leave a comment here and let me know. So, before it starts, here's what you'd need: Nintendlord's Event Assembler (current version is v10.1) Tiled and the Tiled map inserter A hex editor (such as HxD, but any hex editor should be fine) Since FEditor a shit, I recommend learning the MAKEHACK.cmd method outlined in this FEE3 tech demo: FE8 Nightmare modules for use with nmm2csv FE8 Eventiel DON'T USE THIS TO BUILD EVENTS, JUST USE IT FOR HELP WITH CAMERA STUFF AND MAP THINGS. An FE8(U) ROM Event file template Spoiler #include EAstdlib.event EventPointerTable(0x??,ThisChapter) ORG FREESPACE ThisChapter: POIN TurnBasedEvents POIN CharacterBasedEvents POIN LocationBasedEvents POIN MiscBasedEvents POIN Dunno Dunno Dunno POIN Tutorial POIN TrapData TrapData POIN Units Units POIN $0 $0 $0 $0 $0 $0 POIN BeginningScene EndingScene Units: UNIT TurnBasedEvents: END_MAIN CharacterBasedEvents: END_MAIN LocationBasedEvents: END_MAIN MiscBasedEvents: CauseGameOverIfLordDies END_MAIN Dunno: //DO NOT TOUCH WORD $00 Tutorial: //DO NOT TOUCH WORD $00 TrapData: END_MAIN ALIGN 4 BeginningScene: ENDA EndingScene: ENDA // Events // Manual Movement // Scripted Fights // Units // Shop Data MESSAGE Events end at offset currentOffset Free space can be found from b2a610-c00000, as well as the end of the ROM Useful Information This stuff isn't strictly eventing related but is nonetheless helpful to know. Apply this patch to your ROM before you start working, it contains a bunch of essential fixes for FE8 Table of Contents 1. Key Concepts 2. Handling Units 3. The Event Arrays 4. Scene Construction 5. Inserting Maps/Tile Changes 6. More Codes 7. Conditions 8. ASM Condtions/Effects 9. The World Map 10. Misc Info 11. Epilogue And much like Arch's tutorial, this isn't designed to explain basic terminology for ROMHacking and eventing shouldn't be the first thing you try when you want to hack FE. Edited February 22, 2017 by InvdrZim13 Quote Link to comment Share on other sites More sharing options...
InvdrZim13 Posted December 8, 2016 Author Share Posted December 8, 2016 (edited) Chapter 1: Key Concepts Memory Slots These are essentially variables you can use to store values up to 0xFFFFFFFF. Stores value as a word to $030004B8 + (memory slot*4). Maximum memory slot is 0xD. Memory slots are very important for fe8 events! Memory slot 0x0 always has a value of zero - don't bother setting it otherwise. Memory slot 0xB is where coordinates for many commands are read from. Memory slot 0xC is where conditional values are stored - booleans, character IDs, gold count, etc Memory slot 0xD indicates the size of a queue (see below); don't modify it with SETVAL Set them with SETVAL (slot number) (value). Use in conjunction with commands like SET_HP (character ID) - this sets the character's HP to the value stored in Slot 0x1. You can set the parameters of certain commands to 0xFFFF, which will make the game look at the value in memory slot 2. This is useful if you want to, for example, display a certain text depending on the results of an ASMC. ASMC Devil_Robe_ASMC|1 //puts the text id to display into slot 2 NOTIFY 0xFFFF 0x5A 0x0 //5A is the "item obtained" noise. Event Execution Bitfield Set bit 0x7 (using EVBIT_T 0x7) to get rid of the fade to black that normally happens when you use ENDA Bit 0x8 seems to be set when the screen is black (e.g. from FADI) More research needed here Moving to the Next Chapter MNCH: Moves to next chapter (shows world map stuff) MNC2: Moves to chapter directly (no world map) MNC3: Used by Valni,Lagdou and the Final chapters, Part 1 MNC4: Used by Final chapters, part 2 with parameter 0. MNTS: Returns to Title Screen Edited December 8, 2016 by InvdrZim13 Quote Link to comment Share on other sites More sharing options...
InvdrZim13 Posted December 8, 2016 Author Share Posted December 8, 2016 (edited) Chapter 2: Handling Units Defining Units UNIT |char ID| |class ID| |leader| Level(lvl, faction, autolevel) [x,y] |flags| 0x00 |number of REDAs| |pointer to REDAs| [item1, Item2, Item3, ... ] [AI1, AI2] AI3 AI4 Known flags: 0x1 is used for enemies in skirmishes and dungeons; based on the unit's stated class, it is reassigned to one of four classes randomly chosen, given 1-2 class-appropriate weapons or loot, and has its level randomized to between -2 and +5 of its stated value. 0x2 for drop last item. 0x4 will slightly randomize the unit's starting position. REDAs: REinforcement DAta, use them to define movement immediately after loading. You can also use the MOVE command. REDA [x,y] Flags Speed Rescuer Delay Unit Blocks So you've got your units, but you don't know where they're supposed to go so the game knows they're supposed to be there. Fear not, all will be explained soon! Sample unit block: Units: UNIT Owen MageLord 0x0 Level(1,Ally,0) [1,16] 0x0 0x0 0x1 Ow [0x0] NoAI UNIT Sawyer SawyerLord 0x0 Level(1,Ally,0) [1,17] 0x0 0x0 0x1 Sa [0x0] NoAI UNIT Aurora Cleric 0x0 Level(1,Ally,0) [1,15] 0x0 0x0 0x1 Au [0x0] NoAI UNIT Remember to always end it with an empty UNIT, otherwise bad things will happen! Loading Units Now it's time to tell the game to load those units in! LOAD1 0x1 (unit label) - Used to load units the first time they appear LOAD1 0x1 0xFFFFFFFF - loads units from pointer in memory slot 1 (more on that later) LOAD2 0x1 (unit label) - Used to load units in maps they appear in after their first appearance. TODO: Figure out LOAD1 0x0 Loading units in your events: LOAD1 0x1 Label ENUN Don't forget the ENUN! It pauses the events until the current thing is done running, this way your units aren't loading while people are trying to talk or anything like that! SOME EXPLANATION ON THAT STUFF: Enemies and NPCs will always use LOAD1, player units will only use LOAD1 the first time you load them in the game. If your unit shows up in chapter 4, you LOAD1 him for chapter 4, if he shows up in chapter 5, you use LOAD2. If you are using blue units in a cutscene, load them with LOAD2 as well. Specifying units All unit-targeting codes in FE8 use either the character number or one of the following special codes (more research needed to find if xy coords work for anything character related): 0xFFFF: checks active unit (currently selected for moving/attacking) 0xFFFE: checks unit at coordinates stored to Memory slot 0xB (format is 0x00YY00XX) 0xFFFD: checks unit of ID stored to Memory slot 0x2 Set the values of memory slots using SVAL or SMOV or SETVAL (slot) (value) (see Chapter 1 for a refresher on memory slots) Moving Units MOVE speed character [x,y] For more control over the move you can use MOVEFORCED to chain locations: SETVAL 0xD 0x0 //clear the queue SETVAL 0x1 Coords(x,y) //first location SAVETOQUEUE SETVAL 0x1 0x0 //separator SAVETOQUEUE SETVAL 0x1 Coords(x,y) //second location SAVETOQUEUE SETVAL 0x1 0x0 //separator SAVETOQUEUE SETVAL 0x1 Coords(x,y) //third location SAVETOQUEUE SETVAL 0x1 0x0 //separator SAVETOQUEUE MOVEFORCED 0x0 character 0x0 MOVEONTO speed character target for "rescuing" mostly Reinforcements Use the macro: ReinforcementEvent(unitPtr) to load reinforcements for a chapter, it handles moving the camera to where it should be and removing the black flash for you, as well as actually loading the unit. All you need to do is put it into the label for whatever triggers them showing up. AI Changing To Change AI you use this: SETVAL 0x1 0x0000AI2AI1 CHAI ID Hiding/Showing Units CLEA Clears ally units from the map but does not remove them from the party. CLEE Clears enemy units from the map CLEN Clears npc units from the map REMU ID Removes unit from party until next loaded. Used on Eirika/Ephraim at the lord split. Edited January 17, 2017 by InvdrZim13 Quote Link to comment Share on other sites More sharing options...
InvdrZim13 Posted December 8, 2016 Author Share Posted December 8, 2016 (edited) Chapter 3: The Event Arrays To quote Arch: "The POIN array tells the chapter what's what, our event arrays list all of our triggerable events." You may find yourself asking, "What in the hell is a POIN array?" To answer that question, look below: EventPointerTable(0x7,ThisChapter) See ThisChapter? That's the label for the POIN array, which can be found below: ThisChapter: POIN TurnBasedEvents POIN CharacterBasedEvents POIN LocationBasedEvents POIN MiscBasedEvents POIN Dunno Dunno Dunno POIN Tutorial POIN TrapData TrapData POIN Units Units POIN $0 $0 $0 $0 $0 $0 POIN BeginningScene EndingScene It's included in the template already, so you shouldn't have to mess with it at all. CHAR events Basic format is: CHAR EventID label [charID1,charID2] 0x0 There is also a macro for character events that work both ways: CharacterEventBothWays(EventID,Label,charID1,CharID2) Location Events Chests: CHES 0x0 itemID [X,Y] 0x14` (don't change the 0x0 and 0x14 unless you want to do an AFEV linked to the event ID (0x0) and if you do, change that to a value higher than 0x7 Money chests: CHES 0x0 0xXXXX0077 [X,Y] 0x14 XXXX is the amount in hex, and always terminate with 0077 Villages: Village(eventID,label,X,Y) Houses: House(0x0,Label,X,Y) Armories and Shops: SHOP 0x0 ID [X,Y] 0x16 //armory = 0x16 SHOP 0x0 ID [X,Y] 0x17 //vendor = 0x17 ID: SHLI Item1 Item2 Item3... Shops need to have a unique ID even if they're not in the same chapter, your item list will be messed up if you don't. Turn Events To quote Arch again: "This is the TURN code, which will designate a turn event for us. Turn events don't usually have an event ID assigned, since their scope is limited by the turn entries. "pointer" will be the label designating our OpeningScene. For startTurn, we want 01; endTurn will be 00 (this is the default value for events that only happen once)." The basic format for a turn event is TURN EventID SceneLabel [Turn,Phase] 0x0 0x0 runs the event before the player phase, 0x8 runs it before the enemy phase, and 0x4 runs it before the NPC phase. If your chapter is a defend/survive map, this is where you'd put the thing that calls the ending scene. TURN 0xA EndingScene [7,0] 0x0 would end the chapter at the start of Turn 7. You always want to do the number of turns + 1 for this. So if you have a 6 turn defense map, you'd have this be on turn 7. Misc Events The template has CauseGameOverIfLordDies by default, but this is where you specify the thing that tells the game to jump to the ending scene if it is a rout or defeat boss mission (DefeatAll(EndingScene) and DefeatBoss(EndingScene) respectively). AFEV's (AFter EVents) can also go here: AFEV eventID SceneLabel eventIDofPreviousEvent Edited December 8, 2016 by InvdrZim13 Quote Link to comment Share on other sites More sharing options...
InvdrZim13 Posted December 8, 2016 Author Share Posted December 8, 2016 (edited) Chapter 4: Scene Construction Loading Backgrounds and Text Fading in and out: FADI time //Fade-in with blackFADU time //Fade-out with blackFAWI time //Fade-in with whiteFAWU time //Fade-out with white Backgrounds: To load a background: `SETVAL 0x2 (background ID); CALL $9EE2E8` You can use the macro `SetBackground(backgroundID)` for this To remove the background: `CALL $9EE2C4` There is a macro `Text(background,text)` which does all this for you, but you can't change backgrounds mid-conversation. BG to BG transitions For BG to BG fading, you need: 0x2141 0x1B 0x1 0x4 //does the transitioning. Parameters are backgroundID, unknown, speed of transitionREMOVEPORTRAITS After the first BG and before the text stuff that follows. Text: Do your conversations with TEXTSHOW (text ID) and TEXTEND REMA is used to clear the screen (which you should be doing when you change conversations or end a scene) TEXTCONT is used when you have a [LoadOverworldFaces] in your text. Usage: TEXTSHOW IDTEXTEND[Load units/move units/other things]TEXTCONTTEXTEND Music change codes MUSC songID plays the specified song (you can also use the song's name as it appears in your music definitions)MUSS (MUSic Store) MUSM (MUSic Mute)MURE (MUSic REstore) Camera CAM1 [XX,YY]Focuses the Camera at coordinates XX YYCAM1 characterIDFocuses the camera on a specific characterFlashCursor(X,Y,time)FlashCursor(char,time) These flash the cursor on a character or area of a map, for time you can use anything, but 60 is equal to FE6/FE7's automatically timed cursor. Prep Screen To enable the prep screen in your chapter, all you have to do is add GotoPrepScreen to the end of your BeginningScene Sample opening scene: Spoiler BeginningScene: ENUT 0xC6 ENUT 0xC7 ENUT 0xC8 ENUT 0xC9 ENUT 0xCA ENUT 0xCB ENUT 0xCC //Unlocks guide menu entries MUSC 0x07 SETVAL 0x2 Forest; CALL $9EE2E8 //BGStart TUTORIALTEXTBOXSTART SETVAL 0xB 0xFFFFFFFF TEXTSHOW 0x98B //narration TEXTEND _0x2141 0x1B 0x1 0x4 //does the transitioning. Parameters are backgroundID, unknown, speed of transition REMOVEPORTRAITS //no idea what this is, but is necessary MUSC 0x24 //SETVAL 0x2 0x1B; CALL $9EE2E8 //BGStart TEXTSHOW 0x90D//banter TEXTEND MUSC 0x0 TEXTCONT TEXTEND MUSC Lost_Heart TEXTCONT TEXTEND CALL $9EE2C4 //BGEnd MUSC 0x0 LOAD1 0x1 Units ENUN LOAD1 0x1 Commander ENUN LOAD1 0x1 NPCGuys ENUN CAM1 [8,8] STAL 25 ENUN FlashCursor(Owen,60) MUSC 0x24 SETVAL 0x2 0x25; CALL $9EE2E8 //loads bg, bgstart TEXTSHOW 0x90E//entering the fort TEXTEND CALL $9EE2C4 //bgend CAM1 [8,4] MOVE 0x10 Sawyer [11,3] MOVE 0x10 Owen [10,3] MOVE 0x10 Elijah [10,4] MOVE 0x10 Eagle [11,4] STAL 30 MUSC 0x24 SETVAL 0x2 Fort; CALL $9EE2E8 TEXTSHOW 0x90F//talking to commander TEXTEND MUSC 0x2E0 STAL 100 TEXTCONT TEXTEND MUSC 0x25 TEXTCONT TEXTEND CALL $9EE2C4 CAM1 [8,8] _LOAD1 0x1 BossMan ENUN STAL 20 MOVE 0x10 Sawyer [11,10] MOVE 0x10 Owen [10,10] MOVE 010 0x84 [12,10] STAL 65 SETVAL 0x2 0x25; CALL $9EE2E8 TEXTSHOW 0x910//Leonhardt shows up TEXTEND CALL $9EE2C4 MOVE 0x10 0x68 [1,11]//move boss to his spot MOVE 0x10 0x84 [10,2]//moves commander MOVE 0x10 Owen [10,3] MOVE 0x10 Sawyer [11,3] _LOAD1 0x1 Enemies ENUN TEXTSHOW 0x911 TEXTEND REMA EVBIT_T 0x7 //required to stop weird blinking ENDA Edited January 17, 2017 by InvdrZim13 Quote Link to comment Share on other sites More sharing options...
InvdrZim13 Posted December 8, 2016 Author Share Posted December 8, 2016 (edited) Chapter 5: Inserting Maps/Tile Changes Most tile changes are handled by Tiled/the map inserter Pick your .tmx map, pick your ROM, pick an offset, and for the map/map change pointers, find the pointer of it from nightmare, open up a hex calculator (the default Microsoft one has one), multiply that number by 4, and add it to 8B363C. So the pointer for the prologue map is 0x4, and in the hex calculator you'd do 4*4 + 8B363C and put the result in the map pointer box, the same process applies for the map changes pointer. Only manual tile changes need eventing Vertical Doors In LocationEvents: DOOR 0x00 DoorRemoval [X,Y] 0x12 In DoorRemoval (or whatever you call the label), you just need TILECHANGE 0xTileChangeIDinTiled Edited December 8, 2016 by InvdrZim13 Quote Link to comment Share on other sites More sharing options...
InvdrZim13 Posted December 8, 2016 Author Share Posted December 8, 2016 (edited) Chapter 6: More Codes Scripted Fights StartBattle NormalDamage(combatant,damage) CriticalHit(combatant,damage) MissedAttack(combatant,damage) Silencer(combatant,damage) SureShot(combatant,damage) Pierce(combatant,damage) BigShield(combatant) EndAttack FIG1 attacker defender 0x0 for normal fight FIG2 attacker defender 0x0 for map animations only FIG3 0 0 0 is used for the tutorial and rigs the results of the next battle.(not defined in eastdlib by default, the code is 0x3F42) If your scripted battle uses the normal fight and one of the units dies, add these after the fighting part is done: SET_SOMETHING 0xCharID DISA_IF 0xCharID Flashbacks FE8 has those cool sepia flashback scenes, and now you can use them for yourself. _0x2D20 0x4 turns all map sprites sepia toned. Changing to 0x1 is blue, 0x2 is red, 0x3 is green You'll need to insert your own sepia portraits and any new palettes you want to use (Town & Docks has a flashback palette available by default) and set them using Nightmare's Chapter Data Editor. Edited December 8, 2016 by InvdrZim13 Quote Link to comment Share on other sites More sharing options...
InvdrZim13 Posted December 8, 2016 Author Share Posted December 8, 2016 (edited) Chapter 7: Conditions Unlike FE7 the conditional check is in two parts. The first command writes a result to Slot 0xC e.g. CHECK_HARD will store 0(false) or 1(true) to Slot 0xC, while CHECK_MONEY stores your current Gold to Slot 0xC. The second command checks against the result in Slot 0xC. IFNE (conditionID) 0xC 0x0 compares slots 0xC and 0x0. Because Slot 0x0 is always 0, this means "If the previous command returned True..." You can also use IFEQ (equal), IFLT (less than), IFGE (greater or equal to) but remember you are comparing two slots, **not** a slot and a value. The typical conditional will look something like: CHECK_HARD IFNE 0x0 0xC 0x0 //Things that happen if Hard Mode ELSE 0x1 ENIF 0x0 //Things that happen if not Hard Mode ENIF 0x1 Here is a macro for the above: #define IFTRUE(check,conditionid,iftrue,iffalse) "check; IFNE conditionid 0xC 0x0; CALL iftrue; ELSE conditionid+1; ENIF conditionid; CALL iffalse; ENIF conditionid+1" Edited December 8, 2016 by InvdrZim13 Quote Link to comment Share on other sites More sharing options...
InvdrZim13 Posted December 8, 2016 Author Share Posted December 8, 2016 (edited) Chapter 8: ASM Conditions/Effects ASMC 0xCF461: Enables the use of the Guide for your project, if you want an area for lore or something related (this unlocks the whole guide, if you want to unlock it piece by piece you have to enable each entry manually). ASMC 0x85375: Triggers a game over (Or you can use the macro, GameOver) Edited December 8, 2016 by InvdrZim13 Quote Link to comment Share on other sites More sharing options...
InvdrZim13 Posted December 8, 2016 Author Share Posted December 8, 2016 (edited) Chapter 9: The World Map Skipping over the world map: Disassemble the WM events from FE8 with the handy disassembler script (located in the scripts folder in the EA folder) There's two WM events per chapter, WM Intro and WM1. For WM Intro: replace whatever code is in there with: EVBIT_MODIFY 0x1 SKIPWN ENDA You can leave the offset the same since the new stuff is smaller than the old stuff, or you can point it somewhere else (though I've had issues when not using the original pointers). For WM1: EVBIT_MODIFY 0x1 //Don't touch WM_SPAWNLORD 0x0 0x0 0xYY 0xZZ 0x0 // WM_SPAWNLORD 0x0 0x0 0xYY 0xZZ 0x0 YY = main lord. ZZ = just completed chapter WM_LOADLOCATION2 0x0 0xXX 0x0 //Silently and instantly load world map location. //All three XX's should be the same. Remember that this XX should be the world map location offset and be the same location the chapter occurs in vanilla FE8 WM_SETDESTINATION 0x0 0xXX 0x0 //Sets WM destination _0xA640 0x0 0x0 0xXX //sets your position to that place SKIPWN ENDA As with the WM Intro event, you can keep the offset the same or change it to something else. And the codes for the XX's are as follows 0x00 Border Mulan 0x01 Castle Frelia 0x02 Ide 0x03 Borgo Ridge 0x04 Za'ha Woods 0x05 Serafew 0x06 Adlas Plains 0x07 Renvall 0x08 Renvall 0x09 Port Kiris 0x0A Teraz Plateau 0x0B Caer Pelyn 0x0C Hamill Canyon 0x0D Jehanna Hall 0x0E Fort Rigwald 0x0F Bethroen 0x10 Taizel 0x11 Za'albul Marsh 0x12 Grado Keep 0x13 Jehanna Hall 0x14 Renais Castle 0x15 Narube River 0x16 Neleras Peak 0x17 Rausten Court 0x18 Darkling Woods 0x19 Black Temple 0x1A Tower of Valni 0x1B Lagdou Ruins 0x1C Melkaen Coast After you edit the events, just reassemble them in EA and you should be good to go! Skipping the talk with Hayden after chapter 1 ORG $A3C860 IFET 0x88 IFEQUAL 0x1 0xC 0x0 CALL NewEvents ENDB ORG NEWOFFSET NewEvents: WM_LOADLOCATION2 0x0 0x0 0x0 //Might as well load Border Mulan here (optional) WM_LOADLOCATION2 0x0 0x1 0x0 //Like CREATENEXTDESTINATION except silent and instant WM_SETDESTINATION 0x0 0x1 0x0 _0xA640 0x0 0x0 0x01 //like MOVESPRITETO except silent and instant SKIPWN ENDA Just make a new text file, copy that in, pick an offset for the second part, assemble it in EA, and that headache of a scene should be gone! Manipulating the world map A start for maipulating the world map can be found here. Edited December 8, 2016 by InvdrZim13 Quote Link to comment Share on other sites More sharing options...
InvdrZim13 Posted December 8, 2016 Author Share Posted December 8, 2016 (edited) Chapter 10: Misc Info Custom chapter titles: Chapter titles in FE8 are images and require a little more effort to get working compared to FE7, which is just straight text. So, the easiest way to get your chapter titles in FE8 is to make the chapter title in FE7 and then do a few more things to get it in FE8. Step 1: Make whatever your chapter title is supposed to be in FE8 in FE7 (using FEditor) Step 2: Load up FE7 and get to this screen and pause the emulator: Step 3: (I'm assuming you're using VBA) Go to Tools -> Map Viewer Step 4: Find the right BG with the chapter title and click save and name it whatever you want and save it wherever you want. Step 5: Open it in some sort of image editor (probably Usenti) Step 6: Crop as little of the image as possible (try to just get the words for the title and a little extra room if you want) and save it as its own thing Step 7: Open this template in Usenti Step 8: Drop the chapter title in on top of the template in Usenti, match the background color of the pasted image with the color of the template (inkdropper on template background, then fill bucket on background of the title stuff). Step 9: Save it (REMEMBER TO SAVE AS, NOT SAVE, SO YOU DON'T OVERWRITE THE TEMPLATE) Step 10: Open the ROM in GBAGE, go to image controls and go to the chapter image you need to change (the chapter images should start at 1406/1407) Step 11: Insert the image by clicking import a bitmap and make sure your checkboxes are the same as mine. Step 12: Pick a new offset for the image in the event that the new title is bigger than the old one (you should pick a new offset anyway just to be safe). Assuming all goes well, it should be inserted into the game now! Remember to open up the ROM and make sure the image is aligned properly, if it's not open it up in Usenti and move the title to where you think it should be to make it look centered. When you're satisfied with where you moved it repeat the GBAGE insertion steps. And if it's still not lined up right, just keep repeating the process until it looks right in the ROM. Pay to Recruit Events SETVAL 0x4 0x03E8 // this sets the amount of gold that must be payed (in this case, 03E8 in hex=1000) CHECK_MONEY //stores current gold to slot 0xC IFGE 0x0 0xC 0x4 // Do you have the money? Memory slot 0x4 has the money stored EVBIT_F 0x3 // unknown, but necessary Text(0x0B14) // this has a [Yes] command. Just use any text with a [Yes] command SETVAL 0x7 0x1 // Stores 0x1 (yes) to slot 7 IFEQ 0x1 0xC 0x7 // If Slot C matches Slot 7 SLOTS_ADD 0x32 // Slot 2 = Slot 3 (what was in slot 3??) SLOTS_ADD 0x43 // Slot 3 = Slot 4 (Slot 3 now = price) GIVETOSLOT3 // Give Item in slot 1 to char in slot 3?? UNKNOWN //CALL events that happen "if you have the money and you choose Yes". Better to include ENDB or things may screw up ELSE 0x2 ENIF 0x0 //CALL events that happen "if you don't have the amount of money." The Yes/No choice isn't even displayed. ENIF 0x1 //CALL events that happen "if you DO have the money, but you said No". ENIF 0x2 ENDA Glowing Cross GLOWING_CROSS charID STAL Time END_GLOWING_CROSS Makes a glowing circle under the specific chracter for the specific amount of time Earthquakes EARTHQUAKE_START 0x100 STAL Time EARTHQUAKE_END Changing the 0x100 modifies the quake but for the best earthquake results you might as well leave it be so it looks nice. Music transitions So, FE8 is a bit weird with music transitions in text. In FE7, you'd simply use multiple text slots. In FE8; however, you use only one. Here is how you do it. Start your text events like normal: TEXTSTART TEXTSHOW textid TEXTEND Next it gets a bit interesting. To specify the music you want to change to, use the following events: MUSC music TEXTCONT TEXTEND If you want the music before the change to fade out a bit, use the following code before the music code: 0x1322 0x7FFF TEXTCONT TEXTEND Now, we're not done yet, next comes the tricky part. What you need to do next is open up your text editor. In your text slot you need to add in this code to the specific area you want the music to change: [LoadOverworldFaces] So, in the end, your text slot should look something like this. [OpenLeft] So... Mycen said no, did he?[.] What a shame.[.][A][X] [LoadOverworldFaces] [OpenRight] Wait!--[A][0x02] I'll join in my Gramp's place![.][A][X] Edited January 17, 2017 by InvdrZim13 Quote Link to comment Share on other sites More sharing options...
InvdrZim13 Posted December 8, 2016 Author Share Posted December 8, 2016 (edited) EPILOGUE Edited December 8, 2016 by InvdrZim13 Quote Link to comment Share on other sites More sharing options...
Ephraim115 Posted February 13, 2017 Share Posted February 13, 2017 This is my first day on this website, so I'm not really sure how this works. I recently have been working on learning eventing for fe8, and I have a pretty decent knowledge on eventing so far, But I have a few questions. First off, I REALLY don't understand all this SETVAL stuff. Plus I also noticed all these weird codes like FE8: _0x1920 FE8: _0x1922 FE8: _0x1923 FE8: _0x1924 FE8: _0x1925 FE8: _0x1927 FE8: _0x1928 FE8: _0x1929 FE8: _0x1A21 FE8: _0x1A22 FE8: _0x1A23 FE8: _0x1A24 FE8: _0x1A25 There is a bunch of codes like these throughout the fe8 and I can't seem to find out what they do. One more question so far: I started to make chapter 1 again from scratch with the same map that it has. I put music, then slowly fade into the chapter, load orson(ENUN), make him move to coordinates 4,5(ENUN), make a cursor come up on him for 60 seconds, then i use: TEXTSTART TEXTSHOW 0x90A TEXTEND REMA the weird part is, when i make the text come up, so long as i leave the text the way it is, it loads up perfectly fine. but when i change the portrait to orson, and change the text around of 90A, the game freezes every time. only if i edit it. otherwise its fine. idk why. Those are all my questions so far. if anybody knows these things, id appreciate the help thanks. Quote Link to comment Share on other sites More sharing options...
InvdrZim13 Posted February 13, 2017 Author Share Posted February 13, 2017 If you're looking at disassembled events I couldn't tell you what any of those mean just by looking at them. Try to figure it out using context clues. You're probably loading the portrait wrong or otherwise messing up the text formatting, because the event part is right and the vanilla text works. Anyway I think this would be better suited for the EA question thread, so if you have further issues I'd suggest taking them there. Quote Link to comment Share on other sites More sharing options...
Ephraim115 Posted February 13, 2017 Share Posted February 13, 2017 Thank you for answering on such short notice. and I'm making chapter 1 from scratch. It's a blank chapter that I'm writing in. do you mind if I show you what I have for my events and what I have in feditor adv? As far as context clues, I actually tried editing some of the values or taking them out completely just to see what effect it has on the game, and still I can't seem to find anything definite. thank you though I appreciate your help. If you know where I should be asking these questions I'll ask there instead. Quote Link to comment Share on other sites More sharing options...
InvdrZim13 Posted February 13, 2017 Author Share Posted February 13, 2017 Use this thread for any questions related to eventing/event assembler. And don't forget to read the documentation for EA, which is found in the folder you downloaded for it. Quote Link to comment Share on other sites More sharing options...
Ryuke Posted February 16, 2017 Share Posted February 16, 2017 Nightmare modules link is dead. Checking if I have the latest. Where to start basic eventing for FE8. Watch ghastutorial and work from there? Quote Link to comment Share on other sites More sharing options...
InvdrZim13 Posted February 16, 2017 Author Share Posted February 16, 2017 1 hour ago, Ryuke said: Nightmare modules link is dead. Checking if I have the latest. Where to start basic eventing for FE8. Watch ghastutorial and work from there? Updated nightmare module link. Read Arch's guide to chapter construction, read the FE8 EA documentation, go from there. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.