- •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
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
This is pretty simple as it only has one thing to edit (which class appears). The thing is, I don’t suggest editing the ‘empty’ slots at all. This is because these empty slots are most likely separators.
What do they separate? If I had to take a guess, I’d say they separate different modes, meaning the first set of classes is for Lyn’s, the 2nd is for Eliwood’s, and the 3rd is for Hector’s.
My only other comment is that from what I remember, character 0xFB in FE7 (labeled as “Enemy”) is the unit used in the arena. FE6 and FE8 probably also have some unit reserved for the arena in their character editor, I just don’t know which one. That’s all I have to say about this module.
Chapter 18: Boss Music Editor
Very, very simple to use module, but also very useful. I just want to note that you can’t have allies have their own battle themes, to my knowledge. It only works if they are an enemy. However, if you give one of your allied units a battle theme anyway, and then you fight them in the arena, the ‘boss music’ may very well play. I haven’t actually tried this, so it’s just an idea.
Chapter 19: CG Editing – Custom Cutscene Graphics
Note: Currently FE7 oriented.
You want to make your own CGs to insert into a game? Well, here’s all you need to know about making them as well as making use of them.
To start, let’s take a look at the CG Editor module I made. It’s just a table editor, but it can be useful. The graphics pointer points to either A) graphics or B) a set of pointers that has more graphics. The TSA pointers points to the TSA that says how to use the CG graphics and make it into a full-fledged background. The palette pointer is kinda obvious—it’s the palette.
With that out of the way, let’s take a look at the alternate graphics pointer. Lyn mode CGs point to a set of graphics. Take the first entry in the CG editor-- 0x8CED6D0. We’ll go to the offset 0xCED6D0 in a hex editor.
What’s highlighted is the set of pointers. It’s 10 pointers, 0x24 bytes (or 40 bytes). Each graphic is actually a 240x16 piece of the entire CG. If you take all 10 pieces together (vertically) you get a 240x(16x10) or 240x160 image. The size of the GBA screen is 240x160, so we have a full background.
Why do Lyn mode CGs work this way? I can’t say for sure, but I have a good feeling it’s because of the Lyn’s Mode Ending, which uses the CGs as a background. In any case, you can go to one of the pointers and see the graphics if you want. I must admit it is a bit troublesome to use CGs in this manner, which is why you may not want to actually replace these CGs unless you replace them with black graphics (which is what I did in my hack Tactics Universe).
Now, there’s something the current version of the CG Editor is missing (at the time that I am writing this—I may update the module later). It’s a byte that is a flag as to whether the CG works like a Lyn’s mode CG or a normal CG.
Go to 0xCED888 in a hex editor. The byte you see there is 01. If it’s 01, it’s a Lyn mode CG. Else, it works like a normal Eliwood/Hector mode CG. That’s all there is to it.
Some other quick notes:
Palettes are uncompressed
Graphics are compressed
TSA is compressed
Alright. There’s something else I want to tell you about editing CGs. If you want a simple 16 colored CG, there is an easy way to do it.
Just make an image that is 240x160 in size. Load it into Usenti, a bitmap editing program oriented for the GBA that you can find on my site. Hit Palette-> Requantize and type “16” to make it 16 colors. If the image has too many colors to start with, it won’t look good, which is why I suggest you use simple images.
You can also do something like a sepia tone or a one-color image—something that is like grayscale, but tinted with a color, so that it is all red, all blue, etc.
This is a graphics editing thing, however, and I cannot help you with this. You’ll have to ask in a graphics area how to do such an effect.
Anyway, once you get a 16 colored image, change the size to 256x160 using Usenti. The 16x160 portion on the far right that you just added should be the transparent part. Also, at the very top left, there should be a pixel with the color that is going to be transparent. Said pixel will turn up black in-game, but it can’t be helped (by me), unfortunately.
As you can see, I managed to save some quality by making the entire image red, but it’s still kinda eh. On the right in the color box you can see I only have 16 colors (1 row). Although you most likely can’t see it, at the very top left of the CG is a dark red pixel that is the SAME dark red on the right. When I insert this CG, it’ll turn up black, of course.
Once that’s all done, save your image. Load the CG stuff with GBAGE-everything you need to edit a CG is in the CG Editor module. I suggest editing an Eliwood’s mode CG, of course. Type in the graphics offset and the ROMPalette Offset as it is in the CG editor. You don’t really need to load the TSA for the image.
Hit “Import Bitmap” and select your graphic where it says “File”. Put in an offset for the CG to be inserted and check the following stuff:
When that’s done hit “OK” and hit “OK” again. Now save with GBAGE (File->Save) and then exit out.
There’s one last thing. We haven’t touched the TSA, have we?
Well, there’s a ‘trick’ of sorts with images that are 16 colors. The game already has some TSA made to use with a 256x160 image that only has 16 colors. It’s offset is 0x50BE54. Open up the CG Editor in Nightmare and type that under the TSA for your image (remember that since it is a pointer, you type 0x850BE54). Then save.
Now all you have to do is test your CG in game.
…Wait, how to do that?
Well, you need to load the CG using events. The event assembler code to load a CG is-
Shows a CG picture
SHCG XX
XX = picture value
(Direct copy/paste from EA files)
To do it in hex, the code is D3 00 XX 00, not that anyone uses hex anymore… right?
I suggest putting fading codes before and after the CG to smoothen the transition. It’s kinda necessary if you want the CG to look right.
FADI
SHCG 0xNN
FADU
STAL 0xFF
The above is an event to fade into the CG, load the CG “0xNN” (obviously put a real value there), and then wait for time 0xFF (255) in who knows what units (frames?). You can put other codes in between the fading codes, of course. I just showed the bare minimum.
There’s also a macro made by Nintenlord to make it easier:
//Smooth changing to CG
#ifdef _FE7_
#define ChangeToCutScene(cutscene) "FADICG 0x10; SHCG cutscene; FADUCG 0x10"
#endif
All you have to do in your events is put ChangeToCutScene(value) and it’ll change to the cutscene specified. Makes it slightly easier, I suppose. That’s it for events…
BUT WAIT!
There’s a nifty program that can help you insert CGs OVER 16 COLORS! AND THE METHOD IS KINDA EASIER!!!
FEditor Adv has it with it. The batch file is called “Execute CG Maker”. Execute it and you’re your original 240x160 CG image. It’ll ask where to save an image showing what the converted CG looks like after it’s GBA-ification. I’m using an arena (shown below) so I’ll just call my new one “arena2.png”. Next you need to tell it what to call the image data dump. “arenadmp”, “arenaimg”, or “arenagraphics” works. Something to tell you what it is, that’s all that matters. Then you need to save the map data (Xeld calls it map data, but everyone else is so accustomed to saying “TSA” that I just say TSA as well). Save it as something you’ll recognize. Same for the palette data. Then you’re done.
Below is what my image looks like afterwards.
Pretty good, amirite? It uses more than 16 colors and manipulates the TSA/map data in a complex way to do so. Thank Xeld for his program.
Now all you have to do is copy the data from each respective file into some freespace in your ROM, and mark down each offset you insert it at. So for example, we’ll say I am inserting my graphics at 0xD20000, my TSA at 0xD25000, and my palette at 0xD26000. I have them all written down and labeled. I save my hex editor.
Then using the CG Editor module I repoint everything, making sure to add an 0x08 to the beginning of each pointers (0x8D20000, 0x8D25000, 0x8D26000). Then I save with Nightmare and test my ROM (I already went over how to load CGs).
