
- •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
Part 12: Credits & Thanks
My last part, I would appreciate credits and thanks for this tutorial. I sacrificed a ton of time creating this and learning how music works and stuff. I’m not trying to complain butaAll I ask is that if you use it, you put my name (Blazer) and Charon the Ferryman somewhere obvious, like in the credits. Thanks for your understanding – I hope this guide helped you.
Special Thanks To:
Atrius – Lots of information about music editing, helped me insert WAV’s (which is NOT explained here)
Charon the Ferryman – her tutorial on music editing helped and inspired me to make my own tutorial. She also gave me some one-on-one help with how to hack music and I took her method and just expanded on it and stuff like that.
Chapter 25: Music Editing with Zahlman’s Song Editor
First of all, you need to download Zahlman’s song editor to do this. I suggest going to this topic- http://www.feuniverse.net/forums/index.php?showtopic=7874&st=0
Next, download and install Python. It’s necessary.
Once that’s done, extract the files from the download. Read the README and transcript just to give some background. Who knows if it’ll actually help, but it wouldn’t be included if it wasn’t meant to be read, right? XP
Now, double-click cli.py, and some stuff’ll happen. Mainly a screen will come up with a disclaimer and a comment saying that if you need ‘help’ you should press ‘help’.
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:
Commands are not case sensitive. Filenames, probably yeah, just stick with doing proper capitalization always, to limit the chance for problems.
Decimal doesn’t have a prefix, while hexadecimal (AKA ‘hex’) has the 0x prefix. We know this already (if you don’t, then this might be hard for you…).
Don’t include extensions or quotes with filenames
You can use relative paths or absolute paths. To make things easy, when the program needs to access a file, make sure the file is in the same folder as the program. That way you just type the file name—no fuss, no mess.
(some other stuff you can read if you want to—isn’t completely necessary to know when using the program, but a good read anyway)
Now, onto actually using the program. To start, you should know how to find more information on a command. Simply type ‘help commandname’. So for example, to find out how the ‘open’ command works, type ‘help open’.
The open command is the easiest. Just type ‘open nameofrom’. So if my game is called ‘fireemblem8.gba’ I’d type ‘open fireemblem8’. It’ll say “Loaded ROM from disk”.
Now, what to do with this ROM… Well, let’s say I want to extract a song from this game and put it into Fire Emblem 7. First we need to know where the song is in Fire Emblem 8. This is where Sappy can actually be useful. You can have it locate the song table for you and grab the offset from it.
That being said, open Sappy 2005 and then load the ROM you want to export from. It’ll (hopefully) find the song table of the game you are trying to hack—if it doesn’t, then something tells me the game doesn’t use the Sappy engine, so you can’t hack its music with these methods. On the left it’ll say the offset of the song table.
For FE8, the song table is at 0x224470. Now, in the FE8 nightmare modules is a music list. This will actually prove very useful because it tells us which song is which. One day I was feeling nice and I uploaded this song list here, for your reference- http://www.feshrine.net/hacking/downloads/fe8_music_list.txt
Let’s rip Truth, Despair, and Hope (TDH for short) because it’s an awesome song. It’s song 0x0D. Since each entry in the song table is 8 bytes, we need to do (0x0D x 0x08) + 0x224470 to find where the pointer to the song is. We can use Microsoft calculator or an online hexadecimal calculator to do this.
If you don’t see options for hex in MS Calculator, set your view to scientific (View-> Scientific). Then hit “hex” at the top left.
D x 8 = 68, according to MS Calc. + 224470 (the program knows it is hex because it is in hex mode, so no need to put ‘0x’ in MS Calc) is 2244D8. So we’ll go to 0x2244D8 in a hex editor.
I see 5C 2A 55 08. That’s a pointer. It has little endian, i.e. byte reversal, so let’s flip it and we get 08552A5C. Take off the ‘08’ (only the game needs to know about the ‘08’) and we have 0x552A5C. Finally, we have the offset we need.
Back to Zahlman’s Song Editor. All we’ve done so far is ‘open fireemblem8’ to open our FE8 game (or in your case, whatever game you’re using). Next we’ll do rip 0x552A5C to rip the song we want.
Great! All 7 tracks were ripped. Let’s consider ourselves lucky that the program supports those kind of tracks.
Now we can do two things. We can A) save the data in a binary file or B) burn the data to another ROM. Let’s save it and then burn it, for teaching matters.
Type in ‘save songname’ to save the data to a binary file. Since I just ripped TDH, this is what I did:
Now it says we can still burn it if we want. So let’s do that. First, we’ll open up the ROM we want to burn it to. Mine is called ‘sc.gba’ so I’ll do ‘open sc’. Then I’m going to burn the song. I need two offsets—one offset where the pointer to the song will go, and another offset for where the song is going to be inserted to. I know I have some free space at 0xD40000, so that’s solved.
But how do I know which pointer to replace? I have to go to FE7 and do the same thing I did with FE8 to find a song. We’ll say I am trying to replace song 0x5A, which is the main theme. 0x5A x 8 + 0x69D6E0 (offset for FE7’s song table) = 69D9B0. So that is where my pointer is going to go.
So I have to type ‘burn 0x69D9B0 0xD40000’ to make it repoint the song at 0x69D9B0 to the new song I am importing to the offset 0xD40000.
Burning successful! Now I just have to save my game. WAIT, DON’T USE THE SAVE COMMAND. Remember, the save command is to DUMP SONG DATA. We’re trying to save our ROM. Do “close romname”. In this case, I just opened ‘sc.gba’, so I do ‘close sc’.
YESZ. Saved ROM to disk. Alright, I’m going to go test my song out now.
(*Tests…*)