FF3 enemy command script relocation walkthrough by Master ZED (cytekzed@aol.com *OR* http://masterzed.cavesofnarshe.com) *NOTE: For best viewing, maximize using a 1024x768 resolution* *TOC* 1. Intro 2. What you need 3. ROM expansion 4. Moving the command scripts and pointers 5. Script loading offsets 6. Credits Unnumbered. Legal info ----------------------------------------------------------------------------- 1. Intro ----------------------------------------------------------------------------- My inspiration for this doc, a post on GameFAQs: -------------------- From: Grand Lord of Chaos Posted: 2/19/2004 11:33:56 PM The more you can do in pure hex, the more flexibility, and accuracy you'll have. But do not switch between FF3usME and Hex Edititing on the same patch, especially for command script editing, as FF3usME rewrites everything, and moves scripts all over the place. On that note, don't mix editors and patches at all: Example: Yousei's FF3ed can edit overworld maps. Doing that in hex is something no one, save maybe yousei himself, knows how to do. Cless has a patch that will move all the command scripts to a new location, so that you can make Lo--ong scripts. Using Cless' patch, then editing the world map w/ yousei's editor will screw up every single command script (like an enemy that did Special, then end script would cast blaster, ultima, use a potion on itself (or a piece of equipment), then cast spiraler, killing itself... If it doesn't crash the game first... Likewise, editing the world map w/ yousei's editor, then applying Cless's patch will destory the World, and not like WoR style, I mean glitch the world map, or completely ruin the mimimap. So try to stick to one style, and with that in mind, no one style can do everything... yet. -------------------- Did you read the part after "Example:"? That's what set me off. The purpose of this doc is to walk you through the process of manually relocating the enemy command scripts, like I do for each and every monster I've done since... uh... dammit, I dunno when I started doing this, probably Kimerus 3. Why? People are relying on Cless' patch to move the scripts for them, but he only goes to the end of the ROM and pastes it there. This creates a problem for those trying to create maps with Yousei's FF3ED, as it too expands the ROM and tacks the maps after the end of the game data. The end result is chaos, in either a destroyed world map or a destroyed command script section. By doing the relocation yourself, you can put the script data anywhere in some the extra space to avoid this problem altogether. Let's get started! ----------------------------------------------------------------------------- 2. What you need to know ----------------------------------------------------------------------------- You need to know the following to do this; a. The basics of using a hex editor. Writing in hex, copying/cutting/pasting, deleting data, and knowing how to use Save. b. How to write command scripts in hex, or at least sufficent documentation to do so. Why? If you think FF3usME will be able to write your scripts after you relocate them, you're dead wrong. Fortunately, there's sufficent documentation to get started right here on this humble web page of mine. There's even a lame duck tutorial on the subject. If you found this document, you really have no excuse on this matter, unless some ass decided to steal this doc and didn't put up any of my other command script documents on his site as well. Then you're ****ed 'cause he probably edited out my site URL, leaving you stranded here. You need the following software to do this; a. a hex editor. b. something to view this document with. If you're qualified so far, then we're probably on track. :) Also, I have no idea if Yousei's editor automatically clears out the extra meg of space for each map save (namely since I don't use it very often), but if it does, you should obviously make all your world map changes before ever touching this doc. Finally, I'm not going to give you common sense tips like "Now open up your hex editor and open your ROM." You're not stupid and you won't be treated as such, that's why I didn't even mention the ROM in the needed software bit above. If you are stupid... how the hell did you find this place anyway? It's not exactly the most popular site in all the web. ----------------------------------------------------------------------------- 3. ROM expansion ----------------------------------------------------------------------------- The first step. Before we start, make sure your ROM is clean. Or was, if you plan to edit the maps with FF3ED first. If you do that, the ROM is already expanded, and you can move on to section 4. I'm going to tell you only how to edit the game to 4 MB manually in this section. Search the web for something more in- depth, or hit the Links section at this site. This section is here merely to complete the process, that and this is how I always expand the ROM. One last note; I'm not going to tell you how to delete stuff in a hex editor. Figure that out on your own. If you can't, then figure out how to use the cut feature. If you cut something, but never paste what you cut anywhere, it's the same as deleting it. All you have to do here is... a. Go to the end of the ROM. This should leave your cursor at 300200h. b. Once here, just throw in the same number in every new offset until you get to 400200h, but leave that offset and everything past it blank. I prefer a slew of nothing but 00's so that will indicate blank space, but a better option would be to use FF's so if you mess up, the monster's turn will end instead of going into some endless spell barrage. You could use anything you like really, but I'd prefer simplicity, wouldn't you? Some pointers: I. To speed up tacking on 00's (or whatever you're using), put some in, copy that, and paste it multiple times. Copy all that, paste it multiple times, and repeat until you're past 400200h in extra space. At this point, delete 400200h and everything after it and you're done. II. The reason why we're using such an exact number is because the SNES prefers its games to have a nice even number of MB, like 1.5, 2, 2.5, 3, etc. ----------------------------------------------------------------------------- 4. Moving the command scripts and pointers ----------------------------------------------------------------------------- This should be a cakewalk. All you need here is copy and paste. Please note that I will not tell you how to relocate the pointers and scripts away from each other, but that's easy enough to figure out. I'm not going to ask you why you'd want to do that either, because if you plan on actually adding more monsters, then I don't know why you're reading this. NOTE: do NOT use Cut for this section. You'll screw up some of the game code and so much data that the game will be ruined. If you do, you'll have to fill F8600h with the same amount of random garbage that the scripts themselves took up, and that's a waste of time. a. The offsets for the command script pointers and scripts are as follows: Script pointers: F8600 Scripts : F8900 End of scripts : FC24F b. Highlight and copy everything from F8600h to FC24Fh. c. Paste it wherever you want in the blank space you created at the end of the ROM. Keep track of where the pointers and scripts ended up. I recommend you do it at an exact location however, like 380200h for example. Yeah, I said no common sense crap, but I know some of you are destined to screw this up if I didn't say anything about keeping track of the locations. ----------------------------------------------------------------------------- 5. Script loading offsets ----------------------------------------------------------------------------- Now we're going to tell the game where our new data is. Enemy command script pointer loadup: 022F79 Enemy command loadup: 021C45 021C65 021C6C 022F89 In this case, we're editing game code so we'll have to play by it's rules. For example, at the script pointer address, you'll see 00 84 CF. This is really CF8400h, which - BFFE00h is F8600h, the former address of the script pointers. If we went ahead with my 380200h example from the previous section, here's what we'd do: a. Add BFFE00h. This comes out to F80000h. b. Input it in the same format; in this case, it would look like 00 00 F8. And voila. Done. For the enemy command loadups, add 300h to the pointer address (F80000h + 300h). Some loadups use F8902h. For these, add 302h instead of 300h. And we're finished! From here, besides the obvious new locations, you can just hex edit the scripts as normal. One last reminder; to get an enemy command pointer or command script now, instead of F8600h or F8900h, you'll need to input the new base address (for the 380200h example, 380200h for pointers and 380500h for scripts). ----------------------------------------------------------------------------- 6. Credits ----------------------------------------------------------------------------- Grand Lord of Chaos: for writing the post that set me off and led to my writing this. ----------------------------------------------------------------------------- Copyright ©2004 Master ZED The Unoriginal White Sheet: http://masterzed.cavesofnarshe.com/ Final Fantasy 3/Final Fantasy 6/Final Fantasy Anthology copyright ©1994 Squaresoft. I'm not responsible should anything stated in this FAQ/guide do anything. I'm not responsible should anything stated in this FAQ/guide do nothing. I'm not responsible for whatever you or anyone else do with this FAQ/guide or the contents within it. I'm not responsible for whatever you or anyone else don't do with this FAQ /guide or the contents within it. Not to be reposted anywhere else without my permission. All rights reserved. -----------------------------------------------------------------------------