In a era of buildfiles, most users prefer to/opt for going pretty low-key and low-number in the resources used for their hacks, so they fit a cartridge (which is good, if your hack has a plot but no context, or no plot and some context, or both/neither). However, for those who want to make a game with extensive changes, they’ll have to limit themselves to emulating their hacks, or flash them with a special format so they play.
This includes, but doesn’t excludes: Custom animations, maps, music, map sprites, classes, a extended class table, custom items, spells, the Skills System , mugs, hacks, etc.
All of this would make a ideal hack, but…
Have you ever considered inserting a custom tileset, be it from another GBAFE game, or a edited version that includes a tile that you need for a map?
Sure, you want to. Magvel, despite having a Battle Background Set for snow maps, is a tropical mystery land that had no plans on having a snow map (or IntSys had, but, quit about it?). Thinking about it, they didn’t plan on snow maps for Magvel, just look at how hot Carcino is!
Don’t worry, this tutorial will cover your needs to edit and/or import another tileset!
All what you need to know!
This humongous map we see here is denominated as a “tile map”, which is a large collection of tiles that are loaded by the game with a given address, and most importantly, a tileset map, a palette, and a tile configuration, picking up some of these tiles for the map that calls each one of them to represent the shape of the map itself. Or something
However, this isn’t entirely true, as a game so small can’t load a whole tile map this big. So, how does it even do that? The game picks up the tiles and arranges them based on the tile configuration, which is picked up by the tile configuration. So, how does the tileset look like before configuration?
Object Map, a.k.a. the smaller Tileset
“Eugh, what is THAT mess?”, you say. Well, I’d call it a masterpiece, though… according to @Kirb:
it’s just the smaller sheet for the big tileset that gets rendered via tsa
This little buddy, also know as the Object Map, maximum 256x256px big, is what actually carries the goals of the tileset to render it’s tiles. Without it, the tileset will blank, and you can’t make maps without your tilesets! Anyway, Look at how many things are assembled right here; it may all look scrambled, but like I said, the game will render them via the tile configurations, which are used to dictate the four pieces of a tile, each being 8x8, compared to a whole tile’s 16x16 size. It’s setup will be brought up later on.
This is the same thing as the palettes above, except they are now in different colors. On that note, the palette of the tileset is a different matter… and address than the tileset. Why?
All of these elements are called upon via the Event Pointers you’d use for your beloved map when you make it in tools like Tiled. For example, the FE8 Fields’ tileset palette is located at
0x1AEBF0, and it’s palette is
0x140 bytes long, in hexadecimal.
They use five- no, ten rows of palettes, five for the tileset’s normal coloration, five for the Fog of War; usually going in the order of Palette 0, 1, 2, 3 and 4, applying to fog of war as well.These are also used by the tile configuration to make our tiles look nicer, depending on the color chosen. Here’s what each of the Field’s tileset palettes look like without compressing them into a configuration.
These things would normally be a headache to import, but thanks to @Leonarth, we have made advances on inserting these cuties. More on that later, again.
For now, grasp at the sight of this. Epileptics, don’t.
The palette animations, like the tilesets, share the same palette address. However, this isn’t the animations’ final form.
See that number in the midst of the animated tiles? That represents the order of frames in which the animation scrolls before going back to the start, and they are usually used to animate water and/or torches, and the tiles affected are usually the 4th and 5th rows of tiles, which are pointed above and can be distinguished if you change the palette to the one that’s meant for them.
The Event Pointers
Let’s take a look at the Prologue Map of FE8 to greet O’Neill for a moment.
As you can see, the map will function if certain event pointers are given to it’s attributes, which, according to TMX2EA, are:
Main > Required when there are multiple layers.
ChapterID > The chapter number/row in the Chapter Data Editor
ObjectType1/ObjectType > The object set to use, which is comprised by the small tileset above. Can also use ObjectType
ObjectType2 > A secondary type of object sets, but it’s FE7 only, so…
PaletteID > The palette to use
TileConfig > The tile configuration to use, which is also used for the expanded tileset.
MapID > The index of the map in the Event Pointer Table
MapChangesID > The index of the map changes in the Event Pointer Table
Anims1 > Tile Animation to use. Can also use Anims
Anims2 > A different kind of animation type that works differently from above, and only works with a certain tileset. FE8 only.
Now, what pointers does this particular map use? If we check it up, along with the Pointer table editor’s CSV file, we’ll see it uses the following pointers.
Main = (Stays the same, it’s necessary, maybe)
ChapterID = 0 (again, the chapter number/row in the Chapter Data Editor CSV)
ObjectType = 1
PaletteID = 2
TileConfig = 3
MapID = 4
MapChangesID = 6
Anims1 = 5
If you’re going for hexadecimal numbers and not a scolding from TMX2EA or Event Assembler, just write
0xA1, for example.
In a vanilla ROM, the event pointer table goes up to
0xEB, but you can repoint and expand the table, though it’s not effective most of the time, and some people managed to split it up.
Now that all of the above is covered, let’s check up a method I use to import or edit the tilesets!
What you need!
GBAFE Map Hacking Suite
GBAFE Map Hacking Suite
Create and insert a custom chapter map tileset for GBAFE
I haven’t messed with this one enough to know how it works, but it can be used to create and insert custom tilesets. So far, it seems that it works with FE7, but if anyone knows how this works, let me know.
Graphics editing tools
This is one of the most useful programs if you are to edit the tilesets or their palettes, and there are many all over the place, but I’ll show you my personal favorite tools for this job:
Effectively a good palette-editing tool that allows you to edit the palettes for GBAFE Graphics, and a good one to recolor or edit by pixels.
My personal favorite when it comes to editing the tilesets while changing palettes around and copy-pasting them around, all while being given the option to edit them as well. This is what I am using for tileset edition, or palette adjustement in general.
FEBuilderGBA, or FEBuilder
FE_Builder_GBA -- If you have any questions, attach report7z
This is a tool created by the genius known as @7743, coming down from the eastern regions to give us a tool with a nice GUI and to take a easy route through hacking. In my opinion, not great for group projects, but can be used to keep track on errors, changes, and the like, and it’s also good for single projects and Ragefest entries.
However, it will be quite the tool when it comes to editing our tilesets and adjusting them! As well as other stuff but that’s besides the point of this tutorial.
[details=A hex editor]
A good hex editor will be needed for the palettes. Why? You’ll see soon. Anyway, grab here the HxD.
This is a good hex editing tool, and it’s really useful for this task. It’s also free![/details]