Toggle shoutbox
Shoutbox
|

How do I make villages enterable in the Event Assembler?
#1
Posted 10 July 2010 - 10:03 PM
#2
Posted 11 July 2010 - 06:07 AM
Do you have completely custom events? Or do you want to edit events?
If you want to edit events, that could be uh... tricky. I could give some info on it, maybe (I've never really done it, TBH--I always create events from scratch). Also, I'm assuming your situation is that the map already has a village, but when you go there the 'visit' command doesn't show up?
Signature thanks to Shu.
#3
Posted 11 July 2010 - 06:26 AM
#4
Posted 11 July 2010 - 06:43 AM
If you have the most recent event assembler, you can use the very useful macro that is defined in EAstdlib.event:
QUOTE |
Village(event#,nameofevent,x-coordinate,y-coordinate) |

#5
Posted 11 July 2010 - 10:06 AM
That link has...everything I could want to know about event assembler! Thank you so much shadowofchaos! You're awesome for this. I'm loving these forums people are so helpful!
#6
Posted 11 July 2010 - 01:04 PM
The thing with disassembling is that you'll have to know what you're doing. If you're adding new data, you have to know where to add it, and you have to repoint it. I guess I haven't covered this in the Ultimate Tutorial yet, which is why said tutorial is still a WIP despite it being 180+ pages...
Pretty much, to edit what you want to edit:
- Load Nightmare
- Load ROM
- Load Event Reference Module (assuming you're hacking FE7)
- Find the pointer to the events events for whatever chapter you're hacking. So for the prologue, that'd be 0x8CA0720, but you take off the '8'.
- Open up the Event Assembler.
- For "input", open your ROM.
- For "output", type in the name of a text file for the disassembeld events.
- Hit "Offset to chapter event pointer list"
- Type in the offset you got earlier (in this case, 0xCA0720)
- Hit "diassemble"
- Open up your text file it creates. Find the location events (it'll either say Location_events for the label or you'll see a bunch of LOCA events, either clue should help you find it)
- Before those events should be an org 0xOffset. We need to repoint this, so change it to some free space.
- Add a village event using the macro (or 2 village events, in your case). Make sure not to edit anything out of that "group" (you can't insert data because that'll cause problems, so if you want to add data [text = data], you have to repoint it to free space first, so it doesn't interfere with other data--hopefully that made some sense).
- Save
- Assemble the events (Arch's tutorial and the UT both cover that, somewhere--it's pretty much just input text file, output ROM, hit assemble).
That's my generic guide to editing events with disassembling. As I said, it's a little bit tricky, and one little mistake could be "blargh" (which is why you always back up your ROM, especially before trying out something new). It's a lot less work than making your events though, so don't spend your life doing the latter if you don't need to.
Signature thanks to Shu.
#7
Posted 11 July 2010 - 10:39 PM

How do I extend the amount of space on my ROM?
#8
Posted 12 July 2010 - 12:40 AM
I guess I can add another part to my tutorial on this too, huh.
Pretty much load HxD (a hex editor), load your ROM (drag it onto HxD and that'll do it, or do File-> Open, or Ctrl+O), and go to the end of the game (you can drag the scroll bar to the right all the way to the bottom). At the top menu hit Edit-> Insert Bytes... You can put in a hex or decimal value (just make sure to check which one you want to use).
If you want to know how many bytes are needed to add 1MB or something, use google's built-in converter. Type in "1 megabyte to bytes" or something similar to fit your needs and then enter the number it gives (making sure to check 'decimal'). Alternatively just add 0x100000 which is equal to 1MB.
Also, google has a built-in converter to hex, too. Just type "<decimal number> to hex" and it'll do it. Just a heads-up. XP
And I'm glad to be of help.
Signature thanks to Shu.
#9
Posted 12 July 2010 - 07:30 AM
I think I messed up creating more space. I put my new map into the empty space and repointed it as the new ultimate tutorial specified (offset +0x08000000) and my game froze with a high pitched noise after creating the tactician

Did I do anything wrong?
Attached Files
#10
Posted 12 July 2010 - 05:21 PM
The bytes are inserted where your cursor is, so... If your cursor wasn't in address 00FFFFFF, you might have inserted the bytes in the wrong place, effectively pushing things in the rom.
Alternatively, you did remember to, when repointing to the data in the expanded area, use a 09 instead of a 08 in your pointer, right? Else your game would be trying to load something else thinking it was a map, which wouldn't be pretty. >__O
Either of these would be very fixable, so you wouldn't need to restart.

QUOTE (Akaihinata) |
No Grey you have gay needs |
QUOTE (Holy Kensai) |
BECAUSE HE CAN CREATE ALL LIFE AND ALL EXISTANCE, BUT HE NEEDS YOUR MONEY! |
#11
Posted 12 July 2010 - 06:11 PM
That being said maybe if you upload a patch someone could try and fix it (I have a knack for fixing lame bugs, which is why you never see my ask questions--i usually just answer them myself XD) but if you didn't get very far, you could always just restart... :\
Signature thanks to Shu.
#12
Posted 12 July 2010 - 09:12 PM
Attached Files
#13
Posted 12 July 2010 - 10:04 PM

#14
Posted 12 July 2010 - 11:23 PM
#15
Posted 13 July 2010 - 03:38 AM
Also, instead of attaching large pictures that stretch the page like that, please just upload them onto photobucket, imageshack, or some other image website, and then link to them (or if it doesn't stretch the page, you can just show them with the [ IMG ] tags). Just a heads-up, thanks.
Signature thanks to Shu.
#16
Posted 15 July 2010 - 11:51 PM
#define DISABLE_TUTORIALS
#include EAstdlib.event
EventPointerTable(0x06,Pointers)
org 0x01000130
Pointers:
POIN Turn_events
POIN Character_events
POIN Location_events
POIN Misc_events
POIN BallistaData BallistaData
POIN BadEN BadEH BadEN BadEH
POIN GoodEN GoodEH GoodEN GoodEH
POIN Opening_event Ending_event
Turn_events:
CODE 0x00
Character_events:
CODE 0x00
Location_events:
House(0x01,House1,12,18)
Village(0x02, Village1,2,12)
CODE 0x00
House1:
FADI 0x10
BACG 0x01
FADU 0x10
TEX1 0x819
REMA
ENDA
Village1:
FADI 0x10
BACG 0x35
FADU 0x10
TEX1 0x081A
ITGV Rapier
REMA
ENDA
Misc_events:
CauseGameOverIfLordDies
CODE 0x00
Ballista_events:
CODE 0x00
Opening_event:
CAM1 [2,12]
UnitClear
BlackOff
CAM1 [2,12]
SHCG 00
MUS1 0x32
TEX1 0x813
REMA
FADI 0x10
BACG 0x35
FADU 0x10
TEX1 0x814
REMA
LOEV 0x01 0x01 [2,12]
ENUN
CAM1 [2,12]
MOVE [2,12] [2,13]
ENUN
FADI 0x10
BACG 0x03
FADU 0x10
TEX1 0x815
REMA
ENDA
Ending_event:
MNCH 0x??
ENDA
GoodEN:
UNIT 0x01 0x00 Level(1,Ally,True) [2,13] [2,13] [None] [00000000]
UNIT Empty
GoodEH:
UNIT 0x01 0x00 Level(1,Ally,True) [2,13] [2,13] [None] [00000000]
UNIT Empty
BadEN:
UNIT 0x86 0x46 Level(5,Enemy,True) [7,3] [7,3] [0x8F] [0x03,0x03,0x00,0x20]
UNIT 0x86 0x46 Level(1,Enemy,True) [3,4] [3,4] [0x8F] [0x03,0x03,0x00,0x20]
UNIT 0x86 0x46 Level(1,Enemy,True) [12,3] [12,3] [0x8F] [0x03,0x03,0x00,0x20]
UNIT Empty
BadEH:
UNIT 0x86 0x46 Level(5,Enemy,True) [7,3] [7,3] [0x8F] [0x03,0x03,0x00,0x20]
UNIT 0x86 0x46 Level(1,Enemy,True) [3,4] [3,4] [0x8F] [0x03,0x03,0x00,0x20]
UNIT 0x86 0x46 Level(1,Enemy,True) [12,3] [12,3] [0x8F] [0x03,0x03,0x00,0x20]
UNIT Empty
#ifdef _FE7_
#define TileMap(TCN,X1,X2,L1,L2,TilePointer) "CODE TCN X1 X2 L1; CODE L2 0x00 0x00 0x00; POIN TilePointer"
#endif
org 0xC9C9C8+(4*0x??) // - Pointer to tile map changes
POIN TileChanges
org 0x????????
TileChanges:
TileMap(0x00,X1,X2,Y1,Y2,TilePointer)
CODE $FF
CODE $00
CODE $00
TilePointer:
CODE (Tile hex)
CODE $00
MESSAGE Events end at offset currentOffset
//The map for this chapter is at offset: ????????
Anyone have any idea on what could be wrong?
#17
Posted 16 July 2010 - 12:20 AM
EDIT: I just realized I put a bad template in my Ultimate Tutorial. Heheheh... *sweats*
CODE |
#define DISABLE_TUTORIALS #include EAstdlib.event EventPointerTable(0x06,Pointers) org 0x01000130 Pointers: POIN Turn_events POIN Character_events POIN Location_events POIN Misc_events POIN BallistaData BallistaData POIN BadEN BadEH BadEN BadEH POIN GoodEN GoodEH GoodEN GoodEH POIN Opening_event Ending_event Turn_events: CODE 0x00 Character_events: CODE 0x00 Location_events: House(0x01,House1,12,18) Village(0x02,Village1,2,12) CODE 0x00 House1: FADI 0x10 BACG 0x01 FADU 0x10 TEX1 0x819 REMA ENDA Village1: FADI 0x10 BACG 0x35 FADU 0x10 TEX1 0x081A REMA ITGV Rapier REMA ENDA Misc_events: CauseGameOverIfLordDies CODE 0x00 BallistaData: CODE 0x00 Opening_event: CAM1 [2,12] UnitClear BlackOff CAM1 [2,12] SHCG 00 MUS1 0x32 TEX1 0x813 REMA FADI 0x10 BACG 0x35 FADU 0x10 TEX1 0x814 REMA LOEV 0x01 0x01 [2,12] ENUN CAM1 [2,12] MOVE [2,12] [2,13] ENUN FADI 0x10 BACG 0x03 FADU 0x10 TEX1 0x815 REMA ENDA Ending_event: MNCH 0x01 ENDA GoodEN: UNIT 0x01 0x00 0x00 Level(1,Ally,True) [2,13] [2,13] [0x00] [00000000] UNIT Empty GoodEH: UNIT 0x01 0x00 0x00 Level(1,Ally,True) [2,13] [2,13] [0x00] [00000000] UNIT Empty BadEN: UNIT 0x86 0x46 0x00 Level(5,Enemy,True) [7,3] [7,3] [0x8F] [0x03,0x03,0x00,0x20] UNIT 0x86 0x46 0x00 Level(1,Enemy,True) [3,4] [3,4] [0x8F] [0x03,0x03,0x00,0x20] UNIT 0x86 0x46 0x00 Level(1,Enemy,True) [12,3] [12,3] [0x8F] [0x03,0x03,0x00,0x20] UNIT Empty BadEH: UNIT 0x86 0x46 0x00 Level(5,Enemy,True) [7,3] [7,3] [0x8F] [0x03,0x03,0x00,0x20] UNIT 0x86 0x46 0x00 Level(1,Enemy,True) [3,4] [3,4] [0x8F] [0x03,0x03,0x00,0x20] UNIT 0x86 0x46 0x00 Level(1,Enemy,True) [12,3] [12,3] [0x8F] [0x03,0x03,0x00,0x20] UNIT Empty MESSAGE Events end at offset currentOffset |
Problems I fixed with your script:
- Unit data didn't have the character leader byte (you have to put the '0x00' in between the class and level data)
- Ballista data was messed up
- You left in unfilled, blank event data, such as the MNCH code still having '0x??', and the tile changes not being done at all.
- IIRC you can't put in "None" for something. Even if you can, just use '0x00' to mean 'none'.
- You had an extra space in your village event
- You don't have any turn events. Unless you have battle preps on, you need a turn event for the first chapter, which I added. Also, if you don't have battle preps, you have to load both ally and enemy units MANUALLY, meaning the game won't know to load 'GoodEN', 'GoodEH', 'BadEN', and 'BadEH' units. Alternatively turn battle preps on in the Chapter Data Editor and use 'ENDB' at the end of your ending scene.
- You need to include macros to let them be used. Codes like 'UnitClear' and 'BlackOff' won't work unless you include the macros. To include macros, you can constantly copy/paste them onto your events, or better yet, paste them in a different file, like "NewMacros.txt", and then include them at the top with a code like "#include NewMacros.txt".
- For the opening event, you used a UnitClear code which seems sort of useless since no units were loaded. But it doesn't really matter anyway.
- WHen you do music, you have to do MUS1 0xMMMM, meaning when you used the code 'MUS1 0x32', it might mess up, you have to do 'MUS1 0x0032'. I'm not sure if this is an actual problem or not but I think it is.
I didn't actually test your events in an event assembler so that's all I found wrong with it just by looking at it. I fixed everything except for the macros (you have to make your own file and do it yourself) so once you do that, try and insert it and hopefully it'll work. If not, let us know what the EA said.
Signature thanks to Shu.
#18
Posted 24 July 2010 - 04:51 PM
#19
Posted 24 July 2010 - 08:50 PM
Signature thanks to Shu.
#20
Posted 24 July 2010 - 09:33 PM
#include EAstdlib.event
EventPointerTable(0x06,Pointers)
org 0x01000130
Pointers:
POIN Turn_events
POIN Character_events
POIN Location_events
POIN Misc_events
POIN BallistaData BallistaData
POIN BadEN BadEH BadEN BadEH
POIN GoodEN GoodEH GoodEN GoodEH
POIN Opening_event Ending_event
Turn_events:
CODE 0x00
Character_events:
CODE 0x00
Location_events:
House(0x01,House1,12,18)
Village(0x02,Village1,2,12)
CODE 0x00
House1:
FADI 0x10
BACG 0x01
FADU 0x10
TEX1 0x819
REMA
ENDA
Village1:
FADI 0x10
BACG 0x35
FADU 0x10
TEX1 0x081A
REMA
ITGV Rapier
REMA
ENDA
Misc_events:
CauseGameOverIfLordDies
CODE 0x00
BallistaData:
CODE 0x00
Opening_event:
CAM1 [2,12]
MUS1 0x0032
TEX1 0x813
REMA
FADI 0x10
BACG 0x35
FADU 0x10
TEX1 0x814
REMA
LOEV 0x01 0x01 [2,12]
ENUN
CAM1 [2,12]
MOVE [2,12] [2,13]
ENUN
FADI 0x10
BACG 0x03
FADU 0x10
TEX1 0x815
REMA
ENDB
Ending_event:
MNCH 0x01
ENDA
GoodEN:
UNIT 0x01 0x00 0x00 Level(1,Ally,True) [2,13] [2,13] [0x00] [00000000]
UNIT Empty
GoodEH:
UNIT 0x01 0x00 0x00 Level(1,Ally,True) [2,13] [2,13] [0x00] [00000000]
UNIT Empty
BadEN:
UNIT 0x86 0x46 0x00 Level(5,Enemy,True) [7,3] [7,3] [0x8F] [0x03,0x03,0x00,0x20]
UNIT 0x86 0x46 0x00 Level(1,Enemy,True) [3,4] [3,4] [0x8F] [0x03,0x03,0x00,0x20]
UNIT 0x86 0x46 0x00 Level(1,Enemy,True) [12,3] [12,3] [0x8F] [0x03,0x03,0x00,0x20]
UNIT Empty
BadEH:
UNIT 0x86 0x46 0x00 Level(5,Enemy,True) [7,3] [7,3] [0x8F] [0x03,0x03,0x00,0x20]
UNIT 0x86 0x46 0x00 Level(1,Enemy,True) [3,4] [3,4] [0x8F] [0x03,0x03,0x00,0x20]
UNIT 0x86 0x46 0x00 Level(1,Enemy,True) [12,3] [12,3] [0x8F] [0x03,0x03,0x00,0x20]
UNIT Empty
MESSAGE Events end at offset currentOffset
That's it. I have ENDB on so I can try what I've done so far and I plan to change it after testing :]
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users