Advance Map

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:
http://www.pokecommunity.com/showthread.php?t=161616
Below I will mirror it given that the original one doesn’t have working images.


  • Creating maps
  • Areas
  • Movement
  • Events
    • Warps
    • Sprites
    • Scripts
    • Signposts
    • Wild Pokémon
    • Map connections
    • Deleting maps
    • Tile events
  • Miscellaneous
    • Creating bridges
    • Disappearing/Reappearing sprites
    • Common problems

Before we begin: REMEMBER TO ALWAYS BACKUP YOUR ROM!

Creating maps

1. Open your rom

2. Under “File” goto “Map” then “New map”

3. Fill out the required information

Info:

  • Map’s name What you wish to name your map
  • Width & Height:
Place typeUsual widthUsual height
Rooms1310
Towns2420
Cities4840
Forests5469
Caves4840
Areas

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
Movement

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 codeCorresponding movement
CAble to move through
1Unable to move through
4Surf required (water)
DJump or one way movement (small hill)
10Can only be entered or left by going through 0 (change in elevation)
0Stairs and default
Events

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 typeEvent characteristics
WarpsSends the character to other maps
SignpostsStandard, stationary, request event
PersonMovable, changeable, request event
ScriptStationary, 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

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.

PropertyExplanation
Person Event NoThe current sprites ID number
Picture numberThe overworld that will be shown for the sprite (the animated image)
Pos (X/Y)The spites x y coordinates
Movement typeThe pattern the sprite will follow (move up & down, left & right, etc.)
MovementIn my opinion best to just leave at 00
Trainer & view radiusIf the sprite is a Pokemon trainer, and if so how far they can see
Script offsetThe location of the script that will run when the sprite is talked to
Person IDUsed to change the visibility of the sprites with the corresponding flag
Scripts

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.

PropertyExplanation
UnknownStays at 0003 98% of the time
Var numberThe script’s variable ID, used when removing scripts
Script offsetThe 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 ...
The offset $17184A would be put in the offset property of the script.

Signposts

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)!

PropertyExplanation
Talking levelIf the sign can be read from top, bottom, left, right, or in any direction
Signpost typeIf it’s a script hidden item or secret base (RSE only)
*Item IDThe type of item found, if in hidden item mode
AmountHow many items hidden
Wild Pokémon

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.

PropertyExplanation
TypeThe current location you are editing
Encounter ratioThe chance of encountering a wild Pokemon out of 255
Pokemon#Set up as the lowest level possible, the highest, and the Pokemon’s name
ExpandDisplays form below, used for adding or deleting encounter locations
Map connections

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
Offset set to 1, moves the connection map over 1 space
  • Mab bank and no: the transfer map’s map bank and number
Deleting maps

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.
Safe way:
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.
Complete way:
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.

Example

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.

Tile events

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 61 00.
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
Creating Bridges

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.

Over land bridge example
Disappearing/Reappearing Sprites

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# 0250)
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
Common problems

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!
OSWindows
AuthorLu-Ho
Works withR S E FR LG