- •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
Chapter 44: Editing Palettes
There are multiple ways to edit palettes and find the values to change them to.
Method 1: Editing Uncompressed Palettes with SNES Palette Editor
SNES Palette Editor works fine for GBA too, trust me. Download it from google or something and open it up. Load your ROM and go to the offset where your palette is (we already located the palette in the last chapter). Make sure your palette is uncompressed. See my guide in the previous chapter for telling the difference between compressed and uncompressed.
YESZ! We can clearly see the colors and their values. We can even see the Raw Color value and the RGB. If we wanted, we could even do searches for colors, but that’s not really my thing, so I didn’t cover that in my previous chapter’s instructions.
To edit the color, we can drag the bars left and right until we get the color we want. To change which color we’re editing, we just hit the ^ arrow next to the “Address:” slot/the offset. If you want to use a specific color, you can get the color’s RGB from MS Paint or some other program (this is a spriting thing really…), round each value to the nearest multiple of 8, and then divide.
However, converting colors like this can sometimes be a pain, and this method only works for uncompressed palettes, unfortunately.
Method 2: Getting the RGB of a Color and Converting to Hex
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.
Load up MS Paint or another program, zoom in, and use the eyedropper tool to select the color you want to find the RGB of. Often times you can see the RGB off to a window on a side for programs like Photoshop or Corel Paint Shop Pro. I’ll just show you how to do it in MS Paint:
(You can’t see my eyedropper, but I’m about to select the light orangish/brownish color.)
After it’s selected, go to Colors-> Edit Colors… and hit “Define Custom Colors” so that the following pops up (except with whatever color you’re using):
To the far right you can easily change the shade of the color to something lighter or darker. You can also pick another color from the rainbow-like area. What’s most important is the RGB: it is 248, 208, 112.
With this, we can A) round it (it’s already rounded, actually…) to the nearest multiple of 8 and divide by 8 to get the RGB on a 0-31 scale, then put it in SNES Palette Editor or B) put it into GBA Color Picker and get the hex value to use with SNES Palette Editor or a hex editor. We’re going to do B.
Download, extract, and open up GBA color picker. Put in the RGB for your color and it’ll get the nearest match—and it does the rounding, too.
We now have the hex for this color—3B5F. If we put this in a hex editor to replace another color though, we have to reverse the order as usual. You can hit the “Byteswap?” checkbox in GBA Color Picker if you want, but it only does it once, meaning if you edit the RGB input, it’s not going to byteswap it again (you have to click the button everytime to byteswap, pretty much).
By the way, GBA Color Picker crashes if you leave one of the RGB slots empty (without a value). So don’t use backspace to delete the numbers there or it’ll freak out and crash.
So we take the color we’re trying to replace and put in the hex we got. We use this for every color until we’re done. We can use this to replace uncompressed or compressed colors as since we’re humans, we can just skip the ‘00s’ that occur every once in a while in compressed palettes and only replace the bytes that are actually color bytes.
Method 3: Editing Palettes with GBA Graphics Editor
This method involves Nintenlord’s GBAGE. Hopefully you know the very basics of how to work it—have Net Framework 3.5 or higher installed (or Mono, the Linux/other equivalent), how to load a ROM, how to save, and how to input offsets and navigate through images.
After loading GBAGE and your ROM, we need to locate the image you want to change. You can scroll through all the images if you want, you can find out the offset by debugging, you can find it by logic and a hex editor (the palette and the offset are often close to each other, so if you find the palette the graphics might be nearby—it’s up to you to search in a hex editor and find it, not me), or you can see if someone else knows. I happen to have some FE7 offsets, but I’m pretty clueless on FE6 and FE8, so you’ll have to “manually” search those games by scrolling through the images (or you can just use another method to edit palettes…).
Anyway, I happen to know that in GBAGE the title screen background image is at 1369 (offset 66AF8C). The preferred size is 30x32*. We already located our palette at 66AF6C, so we put that into the “ROMPalette Offset” slot of the Palette Control… hey, wait, that’s only 0x20 bytes before the graphics! Oh look, that stuff I said about logic before was actually kinda helpful maybe!
*30x20 will work too. The size is just the # of tiles the image is, with each tile being 8 pixels. The screen is 240x160, and 240/8 = 30 and 160/8 = 20, but it doesn’t matter how large you make the height because there aren’t any graphics to load anyhow.
If you’ve done everything I told you, it should look like that. Actually, it looks kinda weird, doesn’t it? The top left tile (8x8 pixel piece) is missing, and it’s in the bottom left… The reason why the game does that is because it recognizes the first pixel it sees as transparent, and the first pixel would normally be a blue one, so it uses this image where the first pixel is green (the transparent color). To make up for the distorted layout of the graphic, it uses TSA. I suggest you read up on the battle background and CG chapters for this to make more sense.
Anyway, back to relevant information. We have the palette loaded. We can save the image as a PNG, edit the colors using Usenti by changing the RGB values to what we want (click on the colors in Usenti and just put your own RGB/use the scrolly thingies), save the image, and then re-import it. When you reimport the image, all that matters is that you replace the old palette with the new palette.
Yup, I wouldn’t even have anything else checked. Once you import the palette, save your ROM, and you should be done.
With that, we’ve found our colors and replaced the old colors and made our palette changes. After saving, we can load VBA and check out our palette changes to see if they look good, turned out right, and give us a refreshing feeling.
