- •Downloads:
- •Update Log:
- •Table of Contents:
- •Prologue: Bare Basics
- •Chapter 1: Key Terminology & Abbreviations
- •7Zip Archive – Supposedly the best file archiver there is, but not used as much, and thus less convenient. Requires 7zip or winRar to use.
- •VisualBoyAdvance – most people’s emulator of choice, almost always referred to as “vba” for short.
- •Chapter 2: Using Nightmare Modules
- •I upload anything that I think might be useful to someone on that site. Just use the menus and search until you find it.
- •Chapter 3: File Management
- •In order to be a successful hacker you need to have a lot of good management.
- •Chapter 4: Pointer Tables
- •Chapter 5: Battle Animation Editor
- •Chapter 6: Character Editor
- •Chapter 7: Class Editor
- •Chapter 8: Item Editor
- •Item icon – obvious
- •Chapter 9: Spell Association Editor
- •Chapter 13: Movement Cost Editor
- •If the value next to a type of terrain is ‘255’ then it is uncrossable because a unit won’t have 255 movement points.
- •Chapter 16: Battle Palette Reference Editor
- •If you want to know how to actually edit battle palettes’ colors, you can find that in a later chapter that I will make.
- •Chapter 17: Arena Class Editor
- •It’s a bit of work, but making cGs is quite rewarding, and it’s easier than some stuff, that’s for sure! Good luck with your cg making!
- •Chapter 20: Lyn’s Ending Editor
- •Chapter 21: Tutorial Editing/Getting Rid of the Tutorial
- •Part 2: Downloading the Programs
- •Part 3: Preparing Your midi
- •If you still have more than 10 tracks, you should find another midi. Sorry but, there are limits in life.
- •Part 4: Applying Blazer’s Beta Music Insertion/Instrument Patch
- •Part 5: Converting Your midi
- •Part 6: Making Your midi Repeat and Transferring it to Your rom
- •If the b1 and bc are next to each other then I can almost guarantee you want to replace it, so hit “replace” and do that with every instance and once you’re finished you’re good to go.
- •Part 7: Track Pointers & Repointing
- •Part 8: Finale- Assembling Your Song & Profit
- •If you don’t have this module, you’ll have to use this outdated way of doing it. Do check to see if you have the latest Nightmare Modules in general, but otherwise… well, sorry I guess. Xp
- •Part 9: Possible Errors & Wrap-up
- •Part 10: Documentation and Stuff
- •Atrius’ Notes:
- •Charon’s Notes:
- •Part 11: The Music Hacking Run-Down (Shorter Version of Tutorial & Walls of Text)
- •Part 12: Credits & Thanks
- •Chapter 25: Music Editing with Zahlman’s Song Editor
- •If you actually do type in help and press ‘enter’ on your keyboard, it’ll give you a list of commands, and tell you some stuff. Here’s the important stuff:
- •It worked! Great! I know how to import a song!
- •Chapter 26: Exporting Music with gba2midi
- •Chapter 27: Battle Background Graphics
- •If it doesn’t, I suggest double-checking all your settings (everything should be compressed) and make sure your width is set to 30 and your height is set to 32.
- •Chapter 28: Music Array Module
- •Chapter 29: Sound Room Editing
- •Chapter 30: Chapter Unit Editing with Nightmare
- •Chapter 31: Death Quotes
- •Chapter 32: Event iDs
- •Chapter 33: Battle Conversations
- •Chapter 34: Triangle Attacks
- •Chapter 35-36: The Animation Modules & Repointing Tutorial
- •It should look like this:
- •Chapter 37: Support Editing
- •Chapter 38: Miscellaneous Nightmare Modules
- •In this chapter I’m going to quickly run through what some other nightmare modules do.
- •Vendor/Armory Editors – edits the contents of vendors and armories.
- •Vulnerary Editor – edits the amount of hp restored by a vulnerary. (Default: 10)
- •Vulnerary Editor – edits the amount of hp restored by a vulnerary.
- •Chapter 40: Text Editing with fEditor Adv
- •Chapter 41: Portrait Formatting & Preparation
- •Chapter 42: Portrait Insertion with fEditor Adv
- •I wouldn’t mess with the palette editor (the colorful boxes).
- •Chapter 43: Locating Palettes
- •Chapter 44: Editing Palettes
- •I don’t exactly have a color I want to use for this title screen background, so I’m just going to show you how to get the rgb of some random color on a portrait.
- •If something didn’t work right, make sure you:
- •Chapter 45: Working with gbage
- •Chapter 46: Chapter Data Editor
- •Vision Distance is for Fog of War (fow). If it’s ‘0’, it’s assumed there is no fog of war.
- •Hold it! (Unless you aren’t hacking fe7!)
- •Chapter 47: Map Creation
- •I’m tired of writing this tutorial. Honestly. So from now on, I’m going to stop making so many wasteful comments like the one I am typing right now.
- •Chapter 48: Map Insertion
- •If you’re looking to make a totally new chapter (instead of being limited to the old game’s exact same scenes with exact same events) then read on, because I’m going to hack events next!
- •Chapter 49: Event Assembler Basics
- •I would just always add end guards since it’s not something you need to worry about too much.
- •Chapter 50: Events – The Layout
- •Including the stlb
- •Chapter 51: Events – The Event Codes
- •Items is just a list of items with a max of 4 starting items. I prefer to use the 3rd method of writing them, with the brackets and all. Each item is separated by a comma.
- •Chapter 52: Event Construction
- •VillageGate: // name of tile data group
- •Chapter 54: Chapter Creation Finishing Touches
- •Chapter 55: Importing Tilesets
- •Part 2: The First Frame
- •Part 1b: Palette Preparing
- •Part 2: Testing the Foundation to Your Animation
- •If all goes well, your guy should be standing, kinda like this.
- •Part 3: Making the Rest of Your Frames
- •Chapter 58: Custom Battle Animations – Scripts
- •I just pulled a Xeld. Had to do that at least once in this tutorial.
- •If you don’t know what a sound sounds like, just test it out with your animation and find out. Experiment with the codes if you need to.
- •Chapter 59: Custom Spell Animations
- •0X85 command count for this spell: 10
- •It’s true! It did work! It’s still very much a work in progress, as you can see, but the point is we got he test frame working. The rest just takes time, patience, and the attitude that you can do it!
- •Chapter 60: Weapon Icons
- •If you did, you are successful. Despite the odd format of the icons, you have spotted them, and that is what is most important, in my honest opinion.
- •I have this show up:
- •Chapter 61: Map Sprites
- •Chapter 62: Proper Betatesting
- •Chapter 63: vba’s Tools
- •Chapter 64: Other vba Options
- •In this chapter I’m going to detail some of vba’s semi-obscure but not totally obscure options. Knowing how to use vba will help you test your game in various ways.
- •Chapter 65: Recording Videos & Sound
- •Chapter 66: Fixing the Desync with VirtualDubMod & Video Rendering
- •Chapter 67: ips Patching & General Patching Information
- •Chapter 68: ups Patching
- •I suggest you read the ips patching tutorial (at least the beginning) if you haven’t done so as I will not be as thorough with this chapter as I was the previous.
- •In an extremely similar manner you can apply patches. Take a look.
- •Chapter 69: jfp Patching
- •Chapter 70: xDelta Patching
- •Chapter 71: Nightmare Module Format
- •It is recommended (for reasons of readability by humans) that a newline
- •Is unused ("null") for editboxes.
- •Chapter 72: Miscellaneous Information Archive
- •Chapter 73: Useful Links & Websites
- •Chapter 74: Bonus – Assembly Hacking
- •Preparations:
- •Part 1: Background Info
- •Part 2: Inserting an Assembly Hack
- •Part 2: Breaking Down Your First asm Hack
- •I digressed a lot, but back to the point:
- •Part 3: Second Example – More Codes, More Fun
- •Read other people’s doc.
- •Part 4: More Examples – “Speed-Analyzing”
- •It’s thumb. Write to offset 0. Start with label “Initial”. Push 5 registers and the last register, then start a loop counter in r2 with starting value 0x00.
- •Ifat *Conditional id* *asm routine pointer*
- •I may have mentioned this before, but finding where to hack routines is difficult. And I’m sure I mentioned that finding space for them is difficult.
- •It’s not super long, but it’s got some new things we need to learn. Let’s get started.
- •Part 5: Finding asm Routines & Basics of Using a Debugger
- •Warning: terms may not be accurate. In fact, they almost definitely aren’t accurate, as you’ve probably figured out by now.
- •I don’t know what the flags do either, but they’re there, right next to the window. That’s g.
- •I hope to hear of your achievements in the near future!
- •Final Chapter: Credits, Thanks, and the Epilogue
ROM – Read-Only Memory, the “game file”
RAM – Random-Access Memory
Emulator – plays a game, imitating playing on the actual system
GBA – Gameboy Advance.
NDS – Nintendo DS.
DS – short for NDS… lol.
Hardware – we’ll just say it’s the ‘system’ the GBA uses to interpret data found from a cartridge or ROM.
Cartridge – the actual game as it is bought from a store.
Save file – contains save data for the game
Savestate – contains save data for a specific point in the game. One can come back to this moment in the game through a savestate.
ASM – assembly, the programming for the game
TSA – No one seems to knows for sure what it stands for. Use your imagination. It’s also called map data. Its purpose is to take a bunch of mixed-up disorderly graphics and make some sense out of it so that when you see the graphics in-game, they look nice. It’s a sort of “layout” for graphics. Hard to explain.
Debugger – a program that helps debug or a game, or search for bugs, find the cause of them, and fix them. It’s also used to find other things though.
Debugging – the act of using a debugger for its said purpose.
Hacking – editing a ROM.
Modding – another term for hacking, less juvenile I suppose.
Formatting – preparing something to be inserted or used
Patching – applying changes to a game.
Patcher – a program that does patching.
Utility – a tool.
Text – words, characters, script, all types of writing.
Graphics – ‘pictures’, ‘images’, visual aspects of the game.
Frame – a still picture, one part of an animation.
Animations – ‘moving’ pictures—frames put together to give the appearance of something moving.
Compression – a way to scrunch up data as to save space.
LZ77 – A type of compression. Used with graphics, TSA, palettes, and other data.
Huffman – A type of compression. Used in text.
RLE – Run-length encoding. A type of compression that saves space by scrunching up strings of data.
Strings – hexadecimal bytes one after another.
Hexadecimal – “Base 16”, a way to count, essentially. To denote hexadecimal, one can use various prefixes, such as ‘0x’ and ‘$’. The basic counting is as follows: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10. For simplicity purposes sometimes people are lazy and do not put a ‘0x’ before 0-9, since the decimal and hexadecimal values are the same.
Decimal – “Base 10”, another way to count. Most people are familiar with this.
Binary – “Base 2”, another way to count, sort of. Only uses 0s and 1s. Google for more info on binary (I RARELY use it).
MS – Microsoft
Converter – something that converts one thing to another type of thing. For example, MS Calculator can convert hexadecimal to decimal and vice-versa.
GBAGE – GBA Graphics Editor, the best GBA graphics editor for uncompressed and LZ77 data, made by Nintenlord.
EA – Event Assembler, used to edit and insert events. The best way to edit events.
NLZ-GBA – an older program similar to GBAGE, but outdated.
unLZ-GBA – an obsolete graphics editor that I probably shouldn’t even mention.
Text Editing Suite – an obsolete way to edit text.
FEditor Adv – the best way to edit text, animations, and portraits. A program by Xeld, a veteran Fire Emblem hacker.
Song Editor – A program by Zahlman that can rip and insert songs that use the Sappy engine.
Sappy engine – a way that Fire Emblem and other GBA games can interpret music data.
Sappy – it is also a program that is somewhat obsolete that was used to insert music.
MIDI2GBA – a program used to convert MIDIs to GBA data.
tr.exe – a program used to convert MIDIs to GBA data and then put it inside a ROM such that one could listen to the song by emulating said ROM.
MIDI – music file that pretty much says what instrument to use to play what notes of what kind. A simple music file that tells what to play as opposed to a recording (WAV).
WAV – a recording of sound waves.
MP3 – a compressed WAV.
Sprite – a graphical object (can’t think of a better way to say this). Usually refers to portraits or battle graphics (the characters that you see move in animations) but can also refer to other graphics.
Backgrounds – background graphics that don’t really move.
Map sprites – refers to the overworld sprites that a player moves on the map.
Hex editor – a program that edits data in hex (and often includes an ASCII editor to the side).
ASCII text editor – a text editor that edits text in ASCII ‘format’—google for more information. Standard for many things. Fire Emblem uses this, but it compresses the text with Huffman (not that you needed to know that).
Offset – a place in the ROM denoted by a number. For example, the song table is located at 0x69D6E0.
Hex – short for hexadecimal.
Byte – one ‘unit’ of editing. Corresponds to a number. Bytes can go from 0x00-0xFF (0-255 in decimal).
Bits – smaller than bytes. Google.
Word – 4 bytes put together. Common input. Also the size of a pointer.
Half-word – two bytes, half a word.
Pointer – a word that points to some data. In ROMs, it has a prefix of 0x08 to it because the hardware accesses all ROM data at 0x08000000.
Little endian (byte reversal)- Reverses bytes. 0x12345678 becomes 0x78563412. Practice makes perfect. The easiest way to do this is to split up words into bytes.
Big endian- google it, not really too important for you to know.
Word-alignment – Aligning data by the word. Is recommended all the time, but in some rare cases, isn’t necessary. That means that data should start at an offset that ends in 0x0, 0x4, 0x8, or 0xC. 0x57120C is word aligned. 0x571205 is not. Think even/odd, except only the values mentioned above are even, and everything else is odd. XD
Table or Array – look up what an array is. XP. I really can’t explain this—you’ll have to figure out yourself along the way.
Nightmare – a program that edits data tables.
Modules – files with information on what data nightmare should edit. Also called “Nightmare Modules”.
NMM – stands for Nightmare Modules.
Nightmare 2.0 – a new version of Nightmare recreated from scratch by Xeld. Has more features than the original Nightmare along with some fixes.
ZIP archive – a way of compressing files. It takes a bunch of files and puts them into one archive. The files can later be extracted (taken out) from it. It is a very common format. This is something on your computer, not used in-game. It’s used to share lots of files without having to download each one individually.
RAR Archive – Same as above, but better. Also less common. Requires winRAR to use.
7Zip Archive – Supposedly the best file archiver there is, but not used as much, and thus less convenient. Requires 7zip or winRar to use.
Java – google it. Is required for FEditor Adv to work (as well as some other programs like Nightmare 2.0).
Net framework – required for Nintenlord’s various awesome programs to work. The alternative for non-Windows users is Mono.
Tilesets – sets of tiles (lol). It’s what is used to make a map.
Mappy Map Editor – the main program used to make maps.
MAR Array File – a file that can be exported from Mappy. It’s used in conjunction with the MAR Array Inserter to insert maps.
MAR Array Inserter – inserts maps.
Repointing – making a pointer point to something else. Also involves moving data.
Expanding – adding space/room for editing. Making something larger.
Kilobyte/Megabyte/Gigabyte/ - KB, MB, and GB, google these and make sure you know them. Just bigger ways to count bytes.
Palette – a range of colors. When one talks about a palette he’s talking about the colors used in some sort of graphic or art. Most graphics only use 16 colors, including the transparent color, but on occasion more colors are used (for things like CGs).
VisualBoyAdvance – most people’s emulator of choice, almost always referred to as “vba” for short.
That’s all I can think of for now. Anything else I’ll mention later in the tutorial. I think it’s enough definitions for now, anyway.
Chapter 2: Using Nightmare Modules
Nightmare is useful for editing a lot of things. The first things a person thinks of are stats, growths, and classes, but it can do more than that. Each game has different modules though. Fire Emblem 7 has the most modules, for example. And FE8 might have some modules for say, the Valni Tower, which FE7 won’t have. That being said I will go through how to use as many Nightmare modules as I can.
First, you need to get your clean Fire Emblem 7 (U) #1235 ROM. (U) is for U.S.A., #1235 is the ROM #. I nor anyone else can help you with this, so you have to be self-sufficient here. If you know how, you can always rip it straight from the cartridge. I don’t suggest you download any ROMs unless you have the original game either. :\
To get Nightmare Modules as well as everything else you’ll need to hack, I suggest you go here: http://www.feshrine.net/hacks.html
I upload anything that I think might be useful to someone on that site. Just use the menus and search until you find it.
Once you’ve downloaded them, you have to extract the files. winRAR can extract ZIP, RAR, and 7ZIP files, so you might as well just download that and install it. Then right-click and hit “extract here” or “extract to ‘X FOLDER’” on the Nightmare Modules’ file and some folders will pop up.
Navigate to the folder with your stuff. If Nightmare.exe (the actual nightmare PROGRAM) is not included, you can also download that off of the website separately.
Double-click Nightmare to load it. Go to File-> Open Rom… or Ctrl+O and then locate your game. Select it. Then do Modules-> Load Modules and select some modules you would like to use. Nightmare modules have the .nmm extension to them. If you want, you can just load a ton of modules.
Once you’ve loaded your modules, you’re ready to start editing, technically. However, I’m going to go through some of Nightmare’s (the original Nightmare’s, NOT Nightmare 2.0’s) menu options.
File-Open ROM opens the ROM, of course. Do this BEFORE loading your modules.
File-Close ROM closes the ROM. I actually suggest just closing Nightmare and then reloading Nightmare whenever you want to open another ROM.
To save changes, you must first hit “apply changes” (under the File menu) to whatever area you are changing. Easier than that, just hit “enter”. To save all of your accumulated changes, do File>Save ROM, or just do Ctrl+S.
To unload a module and take it off of your list, do Modules->Unload Module.
“Link Rom to Modules” makes it so that whenever you load that ROM, it’ll automatically load those modules. However, if you move or rename the ROM or the modules, it won’t work, and will instead give an error message.
The other options aren’t too useful, so I wouldn’t bother with them.
Now, if Nightmare isn’t working for you, there are several things to look out for:
Make sure you are applying your changes correctly
Make sure you open the right ROM
Make sure if you’ve linked ROMs and modules together, you don’t move or rename the files (it’ll mess it up)
Make sure you open the right modules for the right game, and that they are compatible
Here are some basic Nightmare issues. After the issue are a list of numbers that tell which things to look at. If there is another issue, it’s possible one of the mentioned things applies to your problem as well.
1. Check if you have the right ROM #- 1235, the American version.
2. The ROM is unzipped, meaning, it's a .gba file and not a .zip file. Right-click and extract.
3. Module is not extracted/unzipped. Right-click and extract. Download WinRar if needed.
4. Check if files are updated to the most recent ones.
5. ROM is a .gba file.
6. ROM may need to be expanded.
"The stats are absolutely crazy! Lyn has -128 speed!"
1.
4.
"The Module and ROM are not compatible."
1.
2.
3.
4.
5.
6.
"It's just not loading. It says I'm trying to crash Nightmare."
2.
3.
5.
Now, about the different aspects:
At the very top is what module you are using.
Below that is a list of the different entries in the module you can edit. Usually the entries are labeled so that you know what you are editing.
Below that is the actual data to edit. There are different types of slots. Dropdowns allow you to choose from a list (although sometimes those lists limit you to only certain values). Othertimes you can edit data in decimal—for example, character stats are in decimal. If it was in hexadecimal, I’m sure it’d confuse some of you a bit more.
There are also signed and unsigned bytes. Some values can go up to 255. Other ones become negative once they reach 127 or so. I really forgot the details of signed/unsigned bytes but because of this and other reasons, stats can’t go to like 255.
Whenever you make a change to an ENTRY, you have to press ‘enter’ to apply changes. When you switch entries (say you were editing Eliwood and then you go to Lyn, it’s the same module but a different entry) you have to press enter again for the new changes you make. (You press enter AFTER the changes, btw.)
When you’re done with all your changes, then you can press Ctrl+S.
Here’s an image to help with the Nightmare layout:
That’s pretty much all you need to know about using Nightmare in general. Good luck with your Nightmare editing!
