Advance Map is the most used map editing tool for GBA games.
Ok guys, I don’t want to create another tutorial on Advance Map, you can easily find one by searching the net.
I personally like link12552’s one, because it’s very complete :) , the link is below:
Below I will mirror it given that the original one doesn’t have working images.
- Creating maps
- Wild Pokémon
- Map connections
- Deleting maps
- Tile events
- Creating bridges
- Disappearing/Reappearing sprites
- Common problems
Before we begin: REMEMBER TO ALWAYS BACKUP YOUR ROM!
1. Open your rom
2. Under “File” goto “Map” then “New map”
3. Fill out the required information
- Map’s name What you wish to name your map
- Width & Height:
|Place type||Usual width||Usual height|
Areas are the places that make up the world in your game. They can be forested, mountained, towns, cities, deserts or anything else you can come up with. They are literally what makes a game interesting. Sometimes though people can make locations that really turn you off from a game.
Considering the two forest areas above, which one looks better? The right one of course!
While the right gives a more natural feel, the left just sort of hurts your eyes.
A few tips when making areas are:
- Avoid placing objects in straight lines
- Ponds and lakes aren’t square
- Neither are naturally formed patches of vegetation
- Trees tend to not grow in perfect columns
Known in Advance Map as “Movement Permissions”, this is what is going to tell the game when and where players can or cannot move. This is easily editable through the movement permission tab.
Some of the basic movement types are:
|Movement code||Corresponding movement|
|C||Able to move through|
|1||Unable to move through|
|4||Surf required (water)|
|D||Jump or one way movement (small hill)|
|10||Can only be entered or left by going through 0 (change in elevation)|
|0||Stairs and default|
Events are one of the most important things when making a game, but what exactly are they?
I define an event as something that changes or has the potential to change and display other events or information.
The types of events are:
|Event type||Event characteristics|
|Warps||Sends the character to other maps|
|Signposts||Standard, stationary, request event|
|Person||Movable, changeable, request event|
|Script||Stationary, changeable, collision event|
The number of events can be changed by adding or subtracting from the number of events. To add new events increase the event type by however many you want to add. The same can be done for removing events.
Warps, in a simpler term, are blocks that when stepped on will send your character to another map.
They are set up as follows:
- No: This is the individual selected Warps ID number
- Pos (X/Y): The location where the selected warp exists
- Unknown: For doors and caves unknown: 3, for ladders unknown: 4
- To warp number: Transfer warps ID number
- Map bank: Transfer map’s location bank
- Map: Transfer map’s number
Sprites (Person Event)
What exactly is a sprite?
A sprite can be many things. It can be a blazing fire, a boulder blocking the way, a sign, just a person, or almost anything else you can come up with! In other words, a sprite is an animated, moving, event.
Sprites unlike other events contain many properties. These are all needed to tell the game how to display the sprite.
|Person Event No||The current sprites ID number|
|Picture number||The overworld that will be shown for the sprite (the animated image)|
|Pos (X/Y)||The spites x y coordinates|
|Movement type||The pattern the sprite will follow (move up & down, left & right, etc.)|
|Movement||In my opinion best to just leave at 00|
|Trainer & view radius||If the sprite is a Pokemon trainer, and if so how far they can see|
|Script offset||The location of the script that will run when the sprite is talked to|
|Person ID||Used to change the visibility of the sprites with the corresponding flag|
OK, some of you may be saying to yourselves, “I thought this was an Advance Map tutorial, so what does scripting have to do with this?”.
Yes, true; this tutorial is for advance map, but one type of event is a script.
Scripts are activated when stepped on.
|Unknown||Stays at 0003 98% of the time|
|Var number||The script’s variable ID, used when removing scripts|
|Script offset||The location of the actual code behind the event|
A basic talking script might look like this:
#org 0x17184A msgbox 0x81A303B MSG_SIGN '"It's impossible to SURF between th..." end '--------- ' Strings '--------- #org 0x1A303B = It's impossible to SURF between the\nislands around these parts.\pThe tides are too fast and\ntreacherous.
In this script when stepped on, a box will appear saying, “
It's impossible to SURF between the islands ...”
$17184A would be put in the offset property of the script.
A signpost is the most generic of the events. It’s usually just used as its name implies, as a signpost, although a signpost can also be used as a hidden item (or secret base in ruby, sapphire, emerald)!
|Talking level||If the sign can be read from top, bottom, left, right, or in any direction|
|Signpost type||If it’s a script hidden item or secret base (RSE only)|
|*Item ID||The type of item found, if in hidden item mode|
|Amount||How many items hidden|
Anyone who has ever played a Pokémon game knows about wild Pokemon. The game practically revolves around them, but how exactly are they set up?
In the area above, how would you catch wild Pokémon?
- Walking in the grass
- By surfing on the water
- By fishing
The Pokemon seen on each map can be edited through the wild Pokemon tab.
|Type||The current location you are editing|
|Encounter ratio||The chance of encountering a wild Pokemon out of 255|
|Pokemon#||Set up as the lowest level possible, the highest, and the Pokemon’s name|
|Expand||Displays form below, used for adding or deleting encounter locations|
Map connections are used to create smooth transitions from one map to another automatically during game play.
Clicking the arrows will take you to the connected map.
- Direction: the current connection’s direction
- Offset: how far to position the map relative to the middle
- Mab bank and no: the transfer map’s map bank and number
Once in a while you may come across time when you want to completely remove a map from your game. Ordinarily this can’t be done, but this is how.
Before continuing make sure you back up your rom!
First of all there are two ways this can be done. The safe way or the complete way depending on the intention.
Just reuse the map! Turn it into something completely different instead of completely removing it. All that really has to be done is change the size and tile-sets, and then your ready to recycle.
Sometimes a map can just go bad for one of many reasons, and the best thing to do is completely obliterate it! This method, although, can be pretty messy. For this to work the map you want to delete must be at the end of the bank.
If the map is not at the end of the bank, save all of the good maps in the same bank somewhere. Then delete all the maps in the bank. When your done insert the good maps back into your game.
For this example 13.1 is the last map in bank 13 so this will work.
Open the map you’re going to delete.
Then go to file> map> insert map
Click “Map bank header”
Scroll down to the map’s bank and in the text box type -1
Press “Accept changes”
Finally replace the map with itself.
Many errors will show up, this is normal. Just keep pressing Ok. Finally if all goes well, the map will have been removed from the game.
Tiles, like most other things, are able to be interacted with in the game. Examples of which include: the tall grass, the PC and even warps. Tile events are edited in the first text-box of the Behavior byte:
People ask me a lot why a warp on their map isn’t working and it usually comes back to a tile issue. A warp will not run if the tile it’s on does not have the behavior byte
If you look, the byte
61 means use warp.
Some Behavior Bytes:
00 ??? 01 ??? 02 Grass animation (Pokémon) 03 High grass animation 04 ??? 05 ??? 06 Sand foot prints (with sandheaps) 07 Animation micro grass 08 Bridge with ground underneath 09 ??? 0A ??? 0B ??? 0C ??? 0D Warp into pyramid. Floor 51 0E ??? 0F ??? 10 Reflection on water with waves trailing 11 ??? 12 ??? 13 Waterfall/with falling down 14 ??? 15 Jump with mach bike, splashing water 16 Reflection on water, splashing water, waves 17 Lasting water on feet 18 ??? 19 ??? 1A Reflection (Background byte=20) 1B Water on feet 1C Water on feet + arrow down 1D ??? 1E ??? 1F ??? 20 Slide like on ice 21 Foot prints 22 Diving animation bubbles 23 ??? 24 ??? 25 Sand foot prints 26 ??? 27 ??? 28 Hero halfway underwater 29 ??? 2A Diving animation bubbles 2B ??? 2C ??? 2D ??? 2E ??? 2F ??? ... 61 Use warp 69 Use door warp 70 Bridge with water underneath ... 83 PC 85 World Map There's a lot more just can't list them all here
Some people have a lot of trouble when it comes to making bridges, so here is an explanation.
A bridges movement permission is
3C. There must be
10‘s though, at the ends, to show the bridges’ elevation.
The next part is what usually confuses people. The actual bridge tile’s behavior has to be set to
08 00 for overland brdiges or
70 00 for bridges over water.
At some point in your game you’re going to want to make a person leave the map right? Well here’s how. Remember is sprites I briefly mentioned a sprites person ID and that was used to make a sprite disappear or reappear.
Set the sprite’s Person ID to a flag in the game (i.e. flag
0x250 would be ID#
When the corresponding flag is set using the setflag comand the sprite will disappear. Releasing the flag will make the sprite reappear
The below code would make any sprite with the person ID 0250 not be displayed. Code:
#org 0x800000 setflag 0x250 end
There are many issues people might have when making a map. So here is a list of some common ones and their solutions.
- AdvanceMap Freezes when ever I load a rom is this a problem?
AdvanceMap isn’t frozen hopefully, it just sometimes takes a while to load.
- My warp isn’t working what’s wrong?
In order for a warp to work, it has to be on a tile that has the behavior set to use some version of warp (61 00) see tile events.
- My map connections aren’t working what’s wrong?
Make sure the connection has the correct map bank and number. Also both maps should have connections with each other. Open your map and the connection manager and press the arrow in the direction to see if it works.
- My map’s border in game is using different tiles then the ones i selected. How do i fix this?
This is a tile sharing issue. Refrain from using tiles in the second part of your tile-set as borders. Try using the black tile in the top left corner or a tree as your border.
- I get an error whenever loading this one map. what should I do?
If you really think you can’t fix it, try deleting the map the complete way.
- My game isn’t working!
This is usually not because of AdvanceMap,but in the folder with the rom there should be a file with the same name as your rom *.bak. Change the extension to *.gba. Also you should have been backing up your game regularly!
|Works with||R S E FR LG|