Thread: [Tutorial] PEDRO12's Everything Tutorial
View Single Post
Old October 3rd, 2010, 06:50 AM
Echidna's Avatar
Community Supporter
Join Date: Aug 2010
Location: Vaniville Town
Age: 20
Gender: Male
Nature: Brave
OK guys, here i will explain everything I currently know about hacking. I will explain according to the following "Contents List" which will also be ubdated everytime I add something to the tutorial:

1- Mapping
2- Movement Permissions
3- Wild Pokemon Editting
4- Tile Inserting
5- OW Editting
6- Inserting New Pokemon
7- Inserting New People Sprites
8- Advance Map Events
9- Scripting (Beginner's Scripting to Advanced Scripting)
10- Header Stuff (recommended by Orinjmate)
11- POC and Movement Editor Tutorial

Here are the tools I will use for this tutorial:

1-Advance Map
2-XSE (extreme script editor)
3-MS Paint
4-Infran View
8-Advanced Pokemon Sprite Editor

CLICKHERE to download my toolbox with all the above tools except of course MS Paint.



Mapping is the first main part of hacking, along with scripting, and it is, by definition, using different tiles (such as trees and grass and houses and cave walls), which represent everything you see durring playing the game, to draw maps mainly made up of routes, towns, cities, caves...... to make up the graphical part of the game in which the player will move around. Now, mapping itself is devided into four main parts:

A- Drawing Maps
B- Making Connections Between Different Maps
C- Making New Maps
D- Movement Permissions
E- Wild Pokemon Editting

A-Drawing Maps


First you have to open your ROM in Advance Map, you can do this by clicking the button under the file menu, and browsing for your ROM. Here it is:

Next you have to open the map you want to edit, but first you should change the way your maps are organized, you can do this by clicking here:

And choosing " sort by map name "
Then double click "From Header" and double click the map file you want to edit, and choose the map from that file. To explain more, From Header is the file that contains all the main maps of the game, and in it, each city's and route's maps are organized in files named after that city or route.(yeah that means that each city or route has more than one map). WHY ??? Cause all houses and buildings in that city or route are considered part of the city, and thus are placed in a folder with it. here's how it looks:

After you've opened your map, you have to start drawing.
To do this, first you have to choose the tile you want to use , now you can do this in three ways. 1-by using either the left mouse button or right mouse button on the tiles in the block set on the right (yeah that long strip of tiles on the right side next to your map). 2-by using the right mouse button to choose from tiles already placed on the map. 3-by holding the control button then holding the right mouse button and dragging the cursor above the tiles you want to use. this method allows you to place multiple tiles with a single click. While you drag the cursor above the tiles while holding control and the right mouse button, a window will appear and it will show the tiles you have selected. Release the mouse button to choose the tiles shown in that window. Then release control and click anywhere on the map to draw that group of tiles.
This is how it looks like:

Now you know how to draw.
OH and if you want to make the map bigger or smaller, go to the header tab, and at the bottom you can edit the width and hight under the title "map dimensions" and you can change the tileset that this map uses by editting the numbers under the title "used tilesets", also in the header tab, and always hit change dimensions and change tilesets to save the changes, but just to be safe, always keep the first tileset 0, and change the second one, otherwise you would get messed up tilesets, except for a few rare maps that have two tilsets where the first isn't 0.
Now lets move on to map connections.

B-Making Connections Between Different Maps


Connections are when to maps are connected without a door, no i don't mean that neither map has a door, I mean that the two maps are just connected without a door being needed to warp from one to another, unlike when a map is connected to a cave, in that case the cave's door takes the player to the next map. No, in this type of connection, two maps are placed next to eachother either horizantaly or vertically depending on your chose. So this is similar to how route 1 and pallet town are connected. In advance map they are two seperate maps connected to eachother, whereas in the game, they seem like a single map to us.
To make connections, press the button with the four arrows icon next to the jigsaw puzzle.
Here it is:

In there you can delete old connections or make new ones. To delete a connection, choose it from the connection number list by clicking the up and down arrows till you find the one you want and hit remove, and to add a connection, hit add, choose the side it connects to, then put the bank number and map number of the map you want it to connect to, then theres the offset. Here i have to explain the Bank and Map and offset. To know the Bank Number of a map, and the map number, open From header and the map file in which your map is, and simply look at it and the full name should appear like so:

The first number in the parenthasis is the bank number of that map and the second number is the map number.
Easy HUH ??
And the offset is how many tiles the connection is delayed right or down depending on what direction the connection is made, if it is made vertically, the offset is delayed to the right, and if it is made horizantaly, the offset is delayed downwards. Experiment with this and you'll understand what I mean.

C-Making New Maps


To make a new map, hit the button with the icon that looks like a house with a sun next to it, here it is:

Choose the map name and dimensions and tilesets then hit OK, but before you start drawing you have to insert it so hit the button that looks like a house with an arrow next to it. Here it is:

Now, hit "create and insert". It should say "succesfully inserted as map X.Y where X is the bank number and Y is the map number. Go to the first folder in "From Header" Find the map you just inserted and go to the header tab and there should be something at the top called name. Click the arrow on the dropdown list on the left and choose the folder you want this map to be in. Then go to file save. The map will only be where you wanted it to be after you close and re-open advance map.

OH and here are some notes:


1- Please people, don't go and make lame nonrealistic hacks, map naturally, lets say you want to make a mountain side, draw the outline of the mountain first, then fix the details and corners and fill in the blanks, and same for trees and forests and shores and, know this, no lakes are sqaured or circled, no mountains are straight no mountains are formed of parallel levels, so when you draw the mountain like we mantioned above, draw the second layer the same way and then place a few rocks randomly around the place. Credits to Neti for teaching me that.

2- To edit the music of a map go to the header and there should be something like music or song and there choose from the list and always remember you have to save after you choose the music type, and before you change the tab you're currently in, and you can do that by hitting file ---- > save.

3- When you go to the connections window, you see those four arrows and buttons that say Dive and Emerge , well if there is a connection fitting the discription of one of these buttons, hit it and you'll go to that area. So in other words, take pallet town and route 1 for instants, pallet town is connected to route 1 upwards, so if you go to the connection window while in pallet town, the up arrow is pressable and if you press it, you'll go to route one. Moreover, I'll explain Dive and Emerge, if you make a dive connection to another map, the way to get there ingame is to to press the a button while above that dark water dive type. So put some of that in the map, and make a dive connection, so if you dive in game it'll take you to the map which this map is "dive connected" to, and you'll land on the same coordinates you were on in the original map, so if you were at X=3 ; Y=6
you'll land in the underwater map at coordinates X=3 ; Y=6. Sweat HUH ??? And same for Emerge but you need to put the white ground thing at which you can emerge, you know which one i'm talking about, make the connection and you'll go to the same coordinates like the dive connection.



Well the bad thing about Advance map is that it doesn't know what tiles can be stepped on and which are unpassable. So you'll have to define those yourself. They are called Movement Permissions. So go to the movement permissions tab, and use the left mouse button to choose what tile you want to place from the thin strip on the right. Here's THM10's List of movement permissions :


0 - Crossing of Level Heights (used for going from 1 level to another)
1 - Obstacle, You cannot pass at all
2 - ??
3 - ??
4 - Height Level 0, used for water and using the HM03 Surf
5 - Height Level 0 Obstacle, you can use '1' as well for this. (cannot pass)
6 - ??
7 - ??
8 - Height Level 1, Used as a level for mountains, etc.
9 - Height Level 1 Obstacle, you can use '1' for this too. (cannot pass)
A - ??
B - ??
C - Height Level 2, The default Level used for basically everything on the main level.
D - Height Level 2 Obstacle, you can use '1' for this too. (cannot pass) [Sign]
E - ??
F - ??
10 - Height Level 3, Used as a level for mountains, etc.
11 - Height Level 3 Obstacle, you can use '1' for this too. (cannot pass)
12 - ??
13 - ??
14 - Height Level 4, Used as a level for mountains, etc.
15 - Height Level 4 Obstacle, you can use '1' for this too. (cannot pass)
16 - ??
17 - ??
18 - Height Level 5, Used as a level for mountains, etc.
19 - Height Level 5 Obstacle, you can use '1' for this too. (cannot pass)
1A - ??
1B - ??
1C - Height Level 6, Used as a level for mountains, etc.
1D - Height Level 6 Obstacle, you can use '1' for this too. (cannot pass)
1E - ??
1F - ??
20 - Height Level 7, Used as a level for mountains, etc.
21 - Height Level 7 Obstacle, you can use '1' for this too. (cannot pass)
22 - ??
23 - ??
24 - Height Level 8, Used as a level for mountains, etc.
25 - Height Level 8 Obstacle, you can use '1' for this too. (cannot pass)
26 - ??
27 - ??
28 - Height Level 9, Used as a level for mountains, etc.
29 - Height Level 9 Obstacle, you can use '1' for this too. (cannot pass)
2A - ??
2B - ??
2C - Height Level 10, Used as a level for mountains, etc.
2D - Height Level 10 Obstacle, you can use '1' for this too. (cannot pass)
2E - ??
2F - ??
30 - Height Level 11, Used as a level for mountains, etc.
31 - Height Level 11 Obstacle, you can use '1' for this too. (cannot pass)
32 - ??
33 - ??
34 - Height Level 12, Used as a level for mountains, etc.
35 - Height Level 12 Obstacle, you can use '1' for this too. (cannot pass)
36 - ??
37 - ??
38 - Height Level 13, Used as a level for mountains, etc.
39 - Height Level 13 Obstacle, you can use '1' for this too. (cannot pass)
3A - ??
3B - ??
3C - The final movement permission, this allows crossing above and below as long as the correct Levels and Tiles are used around it.

OK I'll explain, as you can see, 1 is an unaccessable area, no way to step in this tile, 4 is level 1 which is used for surf, put this on water and the player will need surf to get past these tiles, but you also put it on water falls and the game will know itself that you need wterfall to cross it. 5 is an obstacel on level 1, so use it on rocks in water, but the obstacles that are for specific levels are usless, just put a 1 on any tile you don't want the player to be able to pass, so i won't be explaining the obstacles, now the list obviously lists heights (C height 2 which is the normal level for grass and blablabla, 10 is height 3, so it's above C, 14 is height 4, above of both 10 and C, and so on, ....). The player can not pass from one level to another, so if a C tile and 10 Tile are right next to each other, you can't pass from C to 10 and Vice Versa. You need the tile 0 to pass from one to another, so use it for stairs and stuff like that. And finally, we have 3C, this is for bridges, it can be passed from above and below, but to pass it from below it has to be a level lower than the level the bridge is at. And to pass over to the other side, both sides of the bridge have to have the same level. So if at the beginning of the bridge, the tile is 10, the tiles at the end have to be 10 too and the tiles at the sides of the bridge, as in outside of the bridge's boundries, the tiles have to be of a lower level than the ones before and after the bridge. So in the previous example where the tiles before and after the bridge were 10, as in level 3, at the sides the tiles would have to be C, as in level 2, or under, if there were, so the bridge is passable from under and above. Of course the bridge itself should be from tiles 3C. Oh and make sure that the back of some buildings is passable, the game will know that the Hero will be behind the building and thus not visible. If you don't understand, try to walk behind a PokeCenter or mart or house and you'll find out what I mean. And its similar for the top of trees.
Here are some pics:



Real easy, go to the map that you want to edit the wild pokemon for. Now if there are no originally placed wild pokemon in that area, click the button saying "Create New Wild Pokemon Data" and choose what type of wild pokemon you want here, hit ok and you can edit this any time by hitting expand, and after you have defined what type of wild pokemon you want, look at the dropdown list and choose which type to edit then in the list below, choose the pokemon and fill in the two boxes, the first of which is the minimum level of the pokemon and the second of which is the maximum level. The more times the pokemon is repeated in that list, the higher the chance of encountering it grows And then there's the encounter ratio, this is how often you encounter pokemon in this type of grass, so if you put the fishing encounter 100 %, you'll encounter a wild pokemon everytime you fish. It's safest to keep this ratio from 7 to 15 maybe in grass and I don't know how much in other places.



OK, come on guys, wake up. I know you're sleepy by now, but we've gone too far to quit now. WAKE UP !!!!! OK here we go. Sorry if I don't use too much pics but I'll update later with them. But it should be easy to understand without them. There are four types of tile inserting:

1- Replacing old tiles using the same colors.
2- Replacing old tiles using new colors.
3- Inserting new tiles using colors already existing in the game.
4- Inserting new tiles with new colors.

1- Replacing Old Tiles Using The Same Colors


Easiest of all, go to the block editor in advance map, think about the tile you want to replace. You see that dropdown list that says "palette x" where x is a number. Well go through them one by one till you find one that shows your tile in the correct colors, then go to picture ---> save tilset (1 or 2 depending on where your tile is, if you don't understand, tilset 1 is the upper part of the tileset and 2 is the lower part, but you need to know that the tilset under the palette dropdown list is the TILESET, and the one which you choose tiles from in the main advance map window, I'll be calling that Blockset, and that's the strip on the left of the Block Editor window) Here's a pic:

Then Open the tileset in paint, go to the tile, use the eyedroper thing to use any color with in the pic, even if it isn't on the tile itself, and draw a new tile above the one you want to replace, go to the Block Editor, go to picture ----> load tileset (1 or 2 depending on which one you saved) and go to palettes ---> Write palette Changes To ROM. And there you go. But remeber, if your replacing the tile, you have to replace everything having to do with the tile, and only that, don't draw over andything else even if there is a black spot in the middle of the tile, which there usually is, keep it that way unless you're sure that it's part of the tile. OH, and if your tile has black spots, or a missing part....... that's cause you missed something or you used a color not originally in the tileset.

2- Replacing Old Tiles Using New Colors


OK a little more complicated.
This time, do the same as the old one, find the correct palette for your tile, save the tileset, open in paint, but this time, just to make the job easy, erase any tile not without something having to do with your tile, but you have to know that every tile is 16x16 pixels(which are those small cubes in paint, the smallest that can only be one color), and you delete all tiles with nothing to do with your tile, but even if a tile has a very small part of your tile, keep it. Remember, don't move the tiles around, just edit the parts having to do with your tiles, but don't be confused, usually black is the background color, so you can add a little on the sides to make the tile fatter or maybe thinner, but if all this doesn't fit what you want than you'll have to add new tiles, which is more complex, but easier to get what you want. I'll explain next lesson. Anyways, once your done, make sure that the overall colors of the image now is equal or less than 16 and make sure that you keep black as the background color, then save it and open in Infran Veiw. Here you have to index it. But How ??? BE PATIENT, WHAT'S WRONG WITH YOU GUYS ??? OK, here's how you index images. Go to image ---> decrease color depth. Choose 16 colors. Hit ok. Indexing complete. Again go to image ---> palette ---> export palette. Save it somewhere. Save the image. Go to the Block Editor, and in the drop down list of palettes, go through them one by one till you find one that is not needed, as in if you chooses this palette and no tiles in the tileset under it have there correct colors, this is an unused palette. Find it, choose it, go to palette ---> load current palette from file and choose your palette that you just exported. Now save the tileset in which your tile exists, open in paints, and paste the tiles you drew, and place them where they are supposed to be, in other words, where they were before you editted them. Then go to Block Editor and load the tileset, go to the palette, now you have to learn how to move tiles from the tileset to the blockset. You should know that each 16x16 tile is devided into four 8x8 tiles. Now you have to move each 8x8 tile from the tileset to the block set. You'll know what i mean once you try this. It's kinda hard to explain. I'll try anyway. You choose the 8x8 tile by clicking it in the tileset. You can also X flip and Y flip the 8x8 tiles, you can choose the entire 16x16 tile by holding control then holding the right mouse button and dragging the mouse over the tile and release the mouse button before the control button then release the control button. Now you can place an entire 16x16 tile, but you can't X flip nor Y flip the 16x16 tile. Once you choose what you want to use, click the tile ine the block set at the left, and a 32x16 tile should show above the palette drop down list. The 16x16 tile on the left is the background it shows instead of the black parts of the tile. That's why i told you to keep the black black. HAHA . Anyways the 16x16 tile on the right is the tile above the background. Now the black color will be transparent and you'll be able to see the background where the black is. Oh and before going to another tile you have to hit save so that the changes take place and you'll see the difference. But you have to know that the background color isn't always black. It's the first color in the palette. To veiw the palette go to palette --> show palette editor. But don't change anything or you'll mess up the tiles. So if the background transparency doesn't work, save the tileset and open the tileset in paint and look for a tile with the background color you checked for and use the eyedropper thingy, and take that color and fill the background of your tiles with that color. Then load it back to the Block Editor and go to palette ---> write palette changes to ROM. It should work.

3- Inserting New Tiles Using Colors Already Existing In The Game


Ok here all you have to do is follow these steps. It should be easy seeing that you should already understand tile inserting:
- Go To the Block Editor, look for the palette you want colors from, save the tileset 2.
- Open in paint.
- Keep the background the same, and draw a tile in the lower part of the tileset but use only the colors present in the tileset.
- Remember the 16x16 rule.
- Move the tiles and place them just under the last tile, as in, at the beginning of that part of the tileset where there's only the background color. Here:

- If you want to add more tiles put either just under the Tiles you just inserted, or just next to them. But you'll understand this once you start moving the 8x8 tiles from the tileset to the blockset.
- Ok now load the tileset into the Block Editor, go to the palette you had just been using, and do the step where you move the 8x8 tiles or whatever method you want to use and move the tiles from the tileset to the black part of the blockset. OH and don't forget to put the background.
DONE !!!

4- Inserting New Tiles With New Colors


Again just follow these steps and it should work:
- Draw the tile foollowing the 16x16 law.
- Open in infran veiw and index and export palette but make sure that the tiles have 16 or less colors.
- Save the image.
- Go to the block editor.
- Look for an empty palette(as in not used)
- Go to palette ---> load current palette from file.
- Choose the palette you exported earlier.
- Save tileset 2.
- Copy the tiles you drew and paste them right under the end of the last tile...... you should know why by now. If you don't try it. If it works, then you did it right. But if it happens all wrong or it's too hard to move them to the block set, you'll know why I want you to put them in that place.
- Load the tileset to the block editor.
- Go to your palette.
- Move the tiles to the block set.
It should work now !!!!!
If this is too hard to understand, read Cello's tutorial on tile inserting, it has much more images.

OH and here's a list of TileSet combos, which I'm not sure for what game they are:

0+2=Rustboro/route 104
0+3=Dewford/Battle Tower
0+4=Slateport/Slateport Beach
0+5=TrickHouse/Desert/Some flowers
0+7=Fallabor/MeteorFalls/Contest Halls.
0+11=Evergrande City
0+12=Pacifidlog/Sky Pillar
0+13=Sootopolis/CaveOfOrigin(entrance+groundon/kyogre fighting grounds outside)
0+15=more Battlefrontier
0+18=Pokecentre(all floors)
0+19=Caves(all types)
0+20=Pokemon School
0+21=Devon Corp(presidents office)lux furniture
0+23=More meteor falls (good stuff)
0+24=Slateport Museum
0+25=Union Room/Record-MixingRoom
0+26=Slateport SodaPop Shop (on beach)
0+27=Florist on route 104
0+28=Daycare centre
0+29=Slateport Building Docks (generators etc)
0+30=CycleShop/New Mauville
0+31=Moss Cave
0+32=???-Includes quite cool cave bits
0+35=???-Includes quite cool cave bits (like as if you're in space/metal cave)
0+36=More Secret Base-I think
0+37=Brown version of 35
0+38=Inside of truck
0+39=Strange Floor symbols
0+41=Lilycove Art Museum
0+42=Inside your house
0+45=Petalburg Gym (mats-look like saffron dojo)(gym5)
0+46=Ice floors (sootopolis gym-but can be used for caves...)(gym8)
0+47=More house-like bits
0+48=Game Corner
0+49=Roxanne's Gym (gym1)
0+50=Brawly's Gym (gym2)
0+51=Watson's Gym (gym3)
0+52=Cool warpy things (Flannery's gym (gym4)
0+53=TrickHouse-direction editors
0+54=Fortree gym-probably-(gym6)
0+55=Twins gym (gym7)-mossdeep
0+56=abandoned ship-some good stuff here for ship maps and suchlike
0+59=GameCornerCOllection place (think so)-good stuff for cinema map,red carpet etc.
0+60=Battle Castle or Hall. need confirmation
0+61=more frontier crap
0+62=and some more
0+63=Battle Pike (definitely)
0+64=Battle Something-the place which is in a garden...
0+65=Battle Pyramid -some good stuff here-fire and stuff
0+66=More cave stuff-basically 19 but with colour variations. good stuff here too-ice panels
0+67=??? some odd waiting area
0+68=Slateport/Aqua hideout-submarine area (inc doors)
0+69=Trainer Hill(all floors) good stuff here.
0+70=more good cave stuff additions to set 66
0+71=Battlefrontier record place.i think
0+72=inside of contest halls
0+73=some more house bits
0+74=more union room stuff
7+23=Meteor Falls stuff- in centre of set has red craters- good for fire area???

AND as my sweat rather mentally ill friend r0bert once told me, or rather told me to tell you:

Make'em look natural
Be awesome
Be creative
Use ur brain,there's no such things as floating water...wait a minute.....NVM



OK, Guys, go have lunch or dinner or whatever and come back fresh and excited to learn. Really long part here.

Ok. Here we're gonna learn how to insert overworld sprites or at least replace the ones already in the game with custom ones. OverWorld Sprites, OWs for short, are those little person shapes walking around the map and you can interact with. Like your shape when you're walking around, like the shape of mewtwo when you see him in the cave. Like trainers scaterred all around maps and stuff. YOU SHOULD UNDERSTAND BY NOW. WHAT'S WRONG WITH YOU. YOU KNOW THOSE SMALL THINGS ARE CALLED OWs. OK for this you need NSE. Download it and I'll explain the following topics:

•Imports and Exports
•Palette Editing
•Resizing a sprite

First open your rom.



Simple, Move through the index to find the OW you want to edit. Click anywhere on the OW and that part in the red box should appear in the canvas. Got to option, grid, canvas, if it isn't already there, cause the grid is important. Choose any color from the palette and start drawing. OH and just as an explanation, the frames are the different forms that this OW takes like looking upwards, walking left BLA BLA BLA. You have to edit those too to fit your OW so that it's a complete OW.



Yeah i'm gonna do both together. First to export, choose the OW and frame and go to file ---> export ---> export bitmap. You can now edit the OW in MS paint, Then to import hit file ---> import ---> import bitmap, and choose the OW. OK Importing and Exporting Done, but why did i do both together. Cause when you draw an OW in MS paint
You can use any colors you want(less than 16) but you'll have to Edit the palette in NSE to fit the colors you used. And you have to do this before importing. How. Well go to edit palette. Now remember, the first color doesn't appear in the game. It's the background color. Transparent. So first off, choose the eyedrop tool in paint choose the background color and go to edit colors. Now hit define custom colors and look at the three boxes labled red, green, and blue. copy those numbers and back to NSE and in the palette editor, click on the first color, and type the same numbers as before in the red,green,and blue boxes and choose add to custom colors and choose it from custom colors and hit ok. The first color you move has to be the background, then you have to move all other colors present in the OW to NSE but they don't have to be in any order. Let each color replace a color that was present in the old palette, untill you're done. Then you can safely import the image.



Easy again. Go to edit ---> preferances. If the preferance button is gray it means you can't edit this OW's preferances. Ok now you see where it says indexes, change that to "All" and change the width and height and hit save, but the width and height have to be a multiple of 8. Vwalla.
OK we're done with OW editting and we'll get to sprite editting. But if you want more info, read link12552's tutorial on NSE, it is his program after all.



Here I'll teach you an easy 5 step way to insert fakemons or any other 4th generation or fifth generation pokemon.

Follow the following step:

1- Draw your pokemon or get its sprite and reduse the size of the image to 64 width and 64 hight. You can do this by going to "attributes" in paint, or by pressing Ctrl+A to select the entire image then hit the right mouse button and hit strech and skew in older MS paint and strech the image to 64 width 64 hight, or by again pressing ctrl+A and the right mouse button and hitting resize and enter 64 width and 64 hight in new MS panit like in widows 7. Oh and if the latter doesn't work, you know if you enter the width and the hight automatically changes, just see the one which is different from 64 and calculate how much difference there is between that number and 64 and then go expand the work area manually to fit 64 64. Remember to set a background color that isn't used in the sprite itself.

2- (DON'T DO THIS STEP IF YOUR SPRITE IS INDEXED....WHICH IS IN MOST CASES)Save and open the image in infran veiw, hit image ---> decrease color depth, choose 16 colors and hit OK, then again hit image ---> palette ---> edit palette. Now check if the first color to the left is the background of your image, if it is, skip to step 3, if not conitnue here. Now double click the first color to the left and you should see three boxes labelled red, green , and blue. Write down these numbers. Now click cancel and look for the background color between the colors, ad when you find it, double click it and also write down the red blue and green, now replace these red blue and green with the ones you wrote down before and click add to custom colors and choose the color from the custom colors table on the left and hit OK. Now double click the first color to the left and type in the red blu and green you wrote down from the back ground color and hit add to custom colors and choose the color from the custom colors table on the left, and hit OK. If this worked, then the two colors should be switched.

3- (IF YOUR SPRITE IS INDEXED...DPN'T DO THIS TOO)Go to file save as and save it somewhere. Now i know it looks weird but don't worry. Now open the original one, not the one you saved in infranveiw, and press ctrl+A then ctrl+c or just copy the whole image. Now close this and open the one you saved in infran veiw and hit ctrl+V or just paste it above the old one. Now hit Save.

4- Open Advanced Pokemon Sprite Editor. Open your rom by clicking file open, but not before you choose the rom you're working on in the list next to File. Now once you've chosen the rom and opened it, Choose the pokemon you want to replace with the new. Yeah you kinda have to replace and old pokemon. But you do have 25 free spaces. so you can add 25 new pokemon without replacing old ones, those are from numbers 252 till 276. They look like question marks and can be replaced by pokemon sprites. Now once you've chosen the one you want to edit, hit edit and hit import under the sprite you want to edit. Just edit the ones above and once you've imported them all, and they are by the way sprite, shiny sprite, back sprite, shiny back sprite. So replace them and hit update sprite palette, and if one of the sprites you inserted has wrong colors hit synchorize palettes and if an error appears close it with the X button in the top right corner of that window( the error window not the Pokemon sprite editor window), now if any sprites are weird, import them again then hit update sprite palette then synchorize palettes only if there still is something wrong with them. But remember that if you want to import a new back sprite or any other for any pokemon, you have to do steps 1 2 and 3 again for that sprite. I repeat, any sprite inserted in this program has to have gone through steps 1 2 and 3. So if you want to replace the four sprites for any pokemon you have to repeat the first three steps for each sprite. The back sprite, the shiny back sprite, the sprite, and the shiny sprite. Now hit write to rom.....then find free space......the copy the offset into the box and hit ok.........

5- Open YAPE and load your rom and go to the pokemon that was replaced by yours, now you should now, the pokemon is replaced but your here to edit all other things, so change it's name and type and stats and attacks..... Read the YAPE tutorial to know how to do that.



Do the following steps:

1- Draw the person making sure that it has width 80 and hight 80 and save it and do the same as steps 2 and 3 in the previous part.

2- Go to UNLZ and open the rom and look for the person sprite you want to edit by clicking next and previous. The sprites I am referring to are the sprites of people that appear once you get in a battle.
Now hit import and choose the image, of course the one that went through the steps 2 and 3 of the previous part. Now hit write to rom and make sure "Expot Image" and "Auto Abort if new data is bigger" are checked and press ok. But it gave an error, well theres a hex number made of letters and numbers there, here it is

memorize that number and in the hex editor in XSE, you know the calculator on the right, choose hex, type in the number, then choose decimal and memorize that number and go to FSF and open the rom and type in the number where it says needed bytes and hit search and then copy after the offset appears, which is that number in the box under search. Now go to UNLZ gba and again hit write to rom and in the image offset box replace that offset with the offset you copied earlier and make sure that at the beginning of the offset you type in as many zeros as you can, it's most likely one or too , but right before the offset younvhace to type in zeros ok so keep pressing zeros until it can't take any more. When you're done the offset should be 8 digits and/or letters. And make sure only "Expot Image" and "Auto Abort if new data is bigger" are checked. Now hit ok and if a window appears saying something changed hit ok again. Now even if this doesn't happen click write to rom again but this time make sure you have only checked "Export palette" and ""Auto Abort if new data is bigger". Click ok and you're done. TEST IT. If it doesn't work you either followed the steps wrong, or the steps are wrong.



OK here I'll explain what goes on in the event tab in advance map.
There are four types of events here:

1- Warp
2- SignPost
3- Person Event
4- Scripts

OK to choose the type of event you want go to the drop down list on the right and choose the event.

And to add an event, at the bottom left there soyld be a title saying amount of event and under it, there is the number of each event, as in how many of each event exists, and if you want to add one, raise the value of the one you want to add and click change events, and the event should appear in the top left corner of the mapNow I'll explain every event alone, but you should know that if you want to edit a specific event click it on the map once in the event tab. Oh and press ctrl+Z to switch between event veiw and sprite veiw during witch you will see the sprites of the person events. But remember that only person events can be seen in sprite veiw mode and all can be seen in event veiw mode. OK here I'll give you a pic of each events veiw and explain each one:


-ok the X Y positions is where the warp is on the map, don't touch this, just move the tile itself around the map and this wil automatically change itself to fit where the tile is.
-The unknown is well unknown. Just keep it the way it is.
-The to warp number is the number of the waro this warp will take you. Lets say you want the warp to take you to pallet town. Well you have to define which warp in pallet town this warp takes you too. Now to know that warp's number, go to the destination map and click on the warp that you want to arrive at, and under the event type drop down liast, there should be something that says (No.) well thats the number you want, type that into your warps "to warp number" box.
-The map bank and map are the map bank and map numbers of the map you want to arrive at once you go to this warp, Oh and always know that a warp will only work if you place it on a door or something that is supposed to warp. This has to do with the Behavior Byte of the door tile. I don't have to explain those so i won't. Just go to the block editor and look at the list of behavior bytes in the drop down list, or in both and you'll know what i mean. Thats all for warps.


- you know what the X Y positions are.
- talking level is at what height you can talk to this sign post. you should know about heights from the movement permissions lesson.
-the signpost type means whether its a script, as in does an event or says something that requires you to script. I'll get to that later. But it can also be a hidden item, and if it is a new dropdown list asking what item it is will appear. Now fill that in. Or it could be a secret base , but only for RSE (Ruby Sapphire Emerald for newbies).
-The offset is well, only for scripting matters so i'll get to that in the scripting lesson.


-person event no. well we'll call that the people number from now on and it's just used as an ID for it during scripting but you'll understand that in the next and last part of the tutorial which is maybe as big as the whole tutorial so far.
-the picture no. is the OW to use for this person event.
-the unknwon is again unknown, don't touch this.
-the X Y position is known.
-unknown is unknown, don't touch.
-movement type is how this person moves.
-movement is unknown to me for some reason but i doubt it's important. Just keep 0 or experiment.
-unknown is again unknown, don't touch.
-trainer box. Check this and a new trainer will be added to the game and this person is know a trainer and will approach for a battle once you stand in front of him, but it won't work untill you edit the trainer in the trainer editor, A-Trainer.
-unknown is unknown and leave it.
-veiw radius is only important if you checked the trainer box, and its obviously how far ahead the trainer sees.
-the offset and Person ID are for scripting, so leave them for now.
-unknown again, leave it.


ok a script is a tile that activates an event if stepped on.
-you know what X Y position is.
-unknown isn't unknown this time, this has to be 0003 or the script won't work.
-var number has to be 4050 for the script to work.
-var value and unknown aren't important, just leave them alone.
-offset is for scripting, so I'll explain in the next sector.



OK people, I'll start giving lessons according to the the following contents table:

1- Intro
2- Description
3- Messages and Locks
4- Items
5- Pokemon Giving
6- Movement
7- Flags
8- Variables
9- Warps
10- Money and Coins
11- Pokepic
12- Specials
13- Songs
14- Sprites
15- Trainer Battles
16- Wild Battles
17- Weather
18- Marts
19- Buffers
20- Setting Tiles
21- Doors
22- Randoms
23- Closing Word


OK guys, in this tutorial I'll teach you all about scripting. This is the biggest lesson in the entire tutorial, and it will turn you into an expert at scripting, and you have to know that this tutorial will teach you everything about scripting from scratch and you don't have to have any prior knowledge what so ever.



OK, here I'll explain what scripting is and what each script needs to work. First off, scripting is a lot like programming, it's a list of commands, except it has a defined number of commands that make the ROM do specific things like give the hero a pokemon or make an OW move, or start a wild battle, or even change the weather. Now each command, or at least most have parameters. But what are parameters. Well parameters are numbers that the script requires to be placed after it in order for it to work. For example, lets say you use the givepokemon command, well it's parameters are the pokemons number, level, and item to hold, and three buffers. The first three tell the command what pokemon to give and so on, the last three called buffers are there for unknow reasons and should always stay 0x0. But wait, why does it say 0x0 not just 0. Well the "0x" defines a parameter, so each and every parameter used has to have a 0x before the number itself. This is so the game knows that this is a parameter and not part of the command itself. So if the number that has to be placed in the parameters is 5, then it should be written 0x5. Here are commands necessary for almost every script:

- #dynamic 0x<FSF OFFSET>
- #org @start
- end

OK the #dynamic teels the ROM the offset of this script, so instead of <FSF OFFSET>. Type in the offset of this script. I'll explain what an offset is. I'll use almost the same comparison used in the original XSE guide. Imagine the ROM as a book, and scripts as paragraphs, and commands as words. Now lets say you read a very good paragraph and told a friend to read it. Well how would you tell that person which paragraph to read. You would tell hime the page number and paragraph number. That's what an offset is. It's an adress for the script to tell the ROM what script to go to once a person event or anything else is activated. To find an offset, you need FSF. Open it and open the ROM and hit search and copy, then come to XSE and type #dyamic 0x<offset that you coppied>. Now if you pressed copy after search in FSF, all you have to do is paste the offset where it says
"<offset that you coppied>". Now we're done. Oh and if you want another offset but don't want to close FSF then open it again, just hit find next and hit copy and paste it for the next script.

#org @start is used to start the script. So always start the script with:


#dynamic 0x<FSF OFFSET>

#org @start

Yes it's better to have a line between these two commands, but don't put a line between any other commands. OH an there are other uses for #org. But I'll get to those is the messages section.
end is to end the script. If you son't use this at the end of a script, the game will go on to other offsets and crash. So use it.
The general composition of a script is:


#dynamic 0x<FSF OFFSET>

#org @start
command3 bla bla bla

of course command 1, 2, and 3 being substituted by real commands.
One more thing, humans use the numerical system right?? Well XSE uses the hexadecimal system which is used to represent number using the 10 digits and the letters A B C D E F. So instead of counting 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 in the numerical system, we count 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B in the hexadecimal system. Now all numbers used in XSE are in the hexadecimal system, so to convert number from the original form to the hex form, use the calcuator on the right and choose decimal, type in the number, then choose hex and it should be converted, and Vice Versa. So lets say we want to use the give pokemon command and give chikorita, which has a number 152, and we want it level 20, and we want it to hold a berry which by the way has a number lets say 1(yeah items are represented by numbers, I'll give you a list of all items and their numbers later). Well first we change the numbers into hex. 152 in hex is 98, 20 in hex is 14, and 1 in hex is still 1. So the command would look like this:


givepokemon 0x98 0x14 0x1 0x0 0x0 0x0

Again the last three numbers are buffers and should stay 0.
Anyways, one more thing, once you've finished the script, hit open and open the rom, then hit compile, which are both on the tools bar, and then hit copy on the small window that appears, close that window, go to Advance Map and paste the offset in the offset box of the event you want it for. Save and it should work. Here are the Open and Compile button:



OK there are a couple commands for you to learn here:


The first five have no parameters, the lock command locks the player and the person who he is talking to, lockall locks everyone in the map. release releases the player and the person talked to if the lock command has been used, releaseall releases eveyone on the map if the lockall command has been used. faceplayer makes the person you are talking to face you. msgbox makes a message appear on the screen, containing the words or letters you want it to contain. It is written the following way:

msgbox @<pointer> 0x<message type>

Ok, you're probably wondering, WHAT??? I'll explain. 0x<message type> is the type of message that appears. It can range from 0x2 till 0x6:


-0x2 This is used for any person's message. It does the lock, faceplayer, and release commands by itself. So if you use this message type, you don't have to put the lock command nor the faceplayer command nor the release command, cause it locks the player, makes the person you are talking to face you, and then releases the player after the script is done. Sweat huh.

-0x3 Ok this type is used for signs. It's a message box that appears once you look in its direction. So its for signs. This type does not have a lock, facplayer, and release effect like the previous one, but it's better to not use them cause it's not supposed to lock you.

-0x4 This is a normal message, except it doesn't close. The command closeonkeypress must be used after this to make the a button close it. But why would this type be used. Well, lets say you want the game to give you a pokemon. Well isn't the message"player obtained a pokemon" supposed to stay open. Well you use this message box to make that message appear, and you use the type 0x4 making it unclosable. After it you use the closeonkeypress command, but between the two you play the song using a special command, so the box is unclosable till the song is done. There are other uses, but you'll only understand them later on during the advanced part of the tutorial. This message does not have a lock, faceplayer, and release effect by itself.

-0x5 This is the yes/no message box. If you use this, a yes no box will appear with the message. But to use this type effectively, you have to know how to make the game do 2 defferent things if the player chooses yes or no. To do this, you have to use two new commands. I'll only tell you how to use them but i won't deeply explain them till the variables section. 0x800D is a variable. Some commands assign numbers to variables. Once a number is assigned to a varaible, the variable is now equal to it. The message of type 0x5 assigns the value one to the variable 0x800D if the player's descision is yes, and the value 0 to the same variable if the player's answer is no. The command compare checks if a certain value is assigned to a certain variable. It is used the following way:

compare 0x<variable to check> 0x<value to check for>

The <variable to check> is 800D in this case, and the <value to check for> can be any value, but in this case it can only be 0 or 1 cause those are the only numbers that the message command assigns to the variable 800D. So if the <value to check for> is 1, you're checking for the yes answer, and if it is 0, you're checking for the no answer. OK you know how to check, but how to make it do something else if the answer is yes or no. Here comes in the if command. Right after the compare command, use this command in the following way:

if 0x<condition> goto @pointer

OK the <condition> can be 0 or 1. 0 is if the previous command turned out negative, and 1 is if the previous command came out positive, and if the condition is fulfilled, the game will go to another pointer, and if not the game will go on with this script. Read on and you'll know what a pointer is. This message does not have a lock, faceplayer, and release effect by itself.

-0x6 This is a normal message box. It's not like a sign message, it isn't a yes no message, and it closes woth the key press. It's the normal message box. This message does not have a lock, faceplayer, and release effect by itself, so if you don't want the player to be able to move, and the guy to face you, and to be able to walk after the script, use them.

But just so you know, these commands don't have to be used just on people events. You can use them in the middle of the script on a script tile, so once you step on that tile, and once the script reaches the message command, the message will appear. You'll understand later.
NOW lets get to the pointer. A pointer can also be a parameter of a command. Some commands need pointers. But what is a pointer. The message you want the msgbox command to chow has to be somewhere, so the pointer parametr does just that. In the command, instead of @pointer, write anything you want instead of the pointer, but no two pointers in the game can be the same. So start from 1 and move on till the end of the game. You can use letters too. Also there can be no spaces. So "@super cat" and "@no people" won't work. But @1 and @jojo and @smart and @1001 will work.

But how to type in the text. Well after the commands are done, you leave a line after them, then on the next line, tpye in #org @pointer. @pointer being the pointer used in the msgbox command. Then hit enter and and go to tools ---> text adjuster, or just hit ctrl+T, and type in thetext you want in the upper box, hit convert then insert, then close the text adjuster. WHY ?? Because you see how when you hit insert an = sign appears and after it the text and there's a \n or \ or \p. Well you could type those in your self, but the text adjuster will always do a better job. These signs are for moving on to another line. Otherwise the text would go outside the text box and the game would crash.\n simply goes to the next line. \l does the same only if \n was used before it. \p makes the text go on to a new box entirely. Now if you used two msgbox commands in the same script, then you leave a line after the first #org @pointer and do the same as the first, but you use the second msgbox command's pointer. So a script with one msgbox command would look like.


#dynamic 0x<FSF OFFSET>

#org @start
msgbox @1 0x6

#org @1
= Hey dude. How are you?\nI would love to see you\lagain.\pCOOL!!!

And one with two msgbox commands would look like:


#dynamic 0x<FSF OFFSET>

#org @start
msgbox @1 0x6
msgbox @2 0x6

#org @1
= Hey dude. How are you?\nI would love to see you\lagain.\pCOOL!!!

#org @2
= Cool HUH?????????????\n????????????????????\l???????????

Oh and you could also replace lock and release with lockall and releaseall, and if you substitute the 0x6 message type with 0x2, the lock, faceplayer, and release commands, don't have to be used. And if you use 0x4, use closeonkeypress for it to close. OH and a pointer in the type 0x5 of a message is the same. It takes the game to the pointer except this time the pointer isn't a message its simply another script with different commands. Same way, after the first script but before the message pointers, type in #org @pointer where the pointer is the one in the if command, and after the #org @pointer, start putting in the commands you want the script to do if it somes to this pointer. But don't forget to place the end command at the end of this script too. Here's how a script with a yes no message box looks like:


#dynamic 0x<FSF OFFSET>

#org @start
msgbox @1 0x5
compare 0x800D 0x1
if 0x1 goto @2
msgbox @3 0x6

#org @2
message @4 0x6

#org @1
= Hey are you ASH???

#org @3
= OH ok.

#org @4
= Sweat.

Oh and you can change the 0x1 in the compare command to 0x0 to make it check for the no answer and if the answer was no, it'll go to the pointer mensioned in the if command, or you can leave the 0x1 in the compare command and change the 0x1 in the if command to 0x0, and thus if the answer was yes, it goes on with the script and goes on to the pointer if the answer was no. Or you can change both to 0x0, and if the answer was no, it goes to the pointer. Remember it's best to keep all script before the message pointers, like the above command, where the #org @2 is before the #org @1 and @3 and @4. Oh and to know what it does, in the above script, the player is asked "Hey are you ASH???" and if he answer's yes, the game goes to the pointer @2 and the message "Sweat." appears and if he answers no, the game continues with the script and the message "OH ok." appears.

Ok there are a lot of more stuff.

Ok here I'll give you a couple codes. Put this at the beginning of the message, and its effect will take place:
Don't read it now. Wait till you read the other stuff.

[transp_rs] 0
[darkgrey_rs] 1
[red_rs] 2
[lightgreen_rs] 3
[blue_rs] 4
[yellow_rs] 5
[cyan_rs] 6
[magenta_rs] 7
[grey_rs] 8
[black_rs] 9
[black2_rs] A
[lightgrey_rs] B
[white_rs] C
[skyblue_rs] D
[darkskyblue_rs] E
[white2_rs] F

Fire Red/LeafGreen
[white_fr] 0
[white2_fr] 1
[black_fr] 2
[grey_fr] 3
[red_fr] 4
[orange_fr] 5
[green_fr] 6
[lightgreen_fr] 7
[blue_fr] 8
[lightblue_fr] 9
[white3_fr] A
[lightblue2_fr] B
[cyan_fr] C
[lightblue3_fr] D
[navyblue_fr] E
[darknavyblue_fr] F

[white_em] 0
[white2_em] 1
[darkgrey_em] 2
[grey_em] 3
[red_em] 4
[orange_em] 5
[green_em] 6
[lightgreen_em] 7
[blue_em] 8
[lightblue_em] 9
[white3_em] A
[white4_em] B
[white5_em] C
[limegreen_em] D
[aqua_em] E
[navy_em] F

OR FOR TRAINER BATTLE TEXT, same use as any other code except these colors only work for trainer battle messages, you'll get what I mean once we reach trainer battle section. Again don't read these now.

[black_rst] 0
[white_rst] 1
[red_rst] 2
[navy_rst] 3
[lightnavy_rst] 4
[white2_rst] 5
[darkpurple_rst] 6
[lightpurple_rst] 7
[darknavy_rst] 8
[darkgrey_rst] 9
[grey_rst] A
[darkbronze_rst] B
[bronze_rst] C
[darkred_rst] D
[purple_rst] E
[transp_rst] F

Fire Red/Leaf Green
[darknavy_frt] 0
[white_frt] 1
[red_frt] 2
[navy_frt] 3
[lightnavy_frt] 4
[white_frt] 5
[purple2_frt] 6
[grey_frt] 7
[darkpurple_frt] 8
[black_frt] 9
[magenta_frt] A
[white2_frt] B
[magenta2_frt] C
[gold_frt] D
[lightgold_frt] E
[darknavy2_frt] F

[transp_emt] 0
[white_emt] 1
[red_emt] 2
[darknavy_emt] 3
[navy_emt] 4
[white2_emt] 5
[grey_emt] 6
[lightgrey_emt] 7
[darknavy2_emt] 8
[darkgrey_emt] 9
[lightgrey_emt] A
[brown_emt] B
[lightbrown_emt] C
[darkred_emt] D
[purple_emt] E
[transp2_emt] F

x can be one of the above colors(Not Trainer Battle Colors except if it is a trainer battle message).
Use the numbers not the words.

x can be one of the above colors(Not Trainer Battle Colors except if it is a trainer battle message).
This only fills in behind the text not the entir text box.

x can be one of the above colors(Not Trainer Battle Colors except if it is a trainer battle message)
Isn't really visible.

x for text.
y for backgroung.
x and y can be one of the above colors(Not Trainer Battle Colors except if it is a trainer battle message).

x can be 0 or 1
0 for small
1 and above for normal.

As x increases so does the delay interval.

Makes the text a little delayed before it appears.

As x increases so does the movement to the right.

OK how to use this. First go to advance map and look for the song you want to play during this message. The hex should appear on the right. Song hex is yyxx so we flip them and put them in a code shape and putt xx first then yy in the code. Consider the hex of the song to be 12A3. The the code would be \c\h10\hA3\h12
The songs are: (I think the first two are FR and LG and the second 2 are R and S and the final one is Emerald)



015E=Littleroot Town Test
015F=Gold/Silver - Route 38
0160=Wild Pokemon Defeat
0161=Wild Pokemon Defeat w/Intro
0162=Gym Leader Defeat
0163=Acquired Badge
0164=Crystal - Pokémon Center
0165=Gold/Silver - Saffron City
0166=Crystal - Battle with Legendary Dogs
0167=Route Theme 1
0168=Route Theme 2
0169=Route Theme 3
016A=Petalburg City
016B=Oldale Town, Lavaridge Town
016E=Caves & Darkness(Rusturf Tunnel, Granite Cave, Petalburg Woods, Jagged Pass, Fiery Path, Scorched Slab)
016F=Level Up
0170=Pokemon Healed
0171=Big Victory
0172=Acquired Item
0173=Pokemon Caught
0174=Got TM/HM
0175=Lilycove Museum
0176=Route Theme 4
0177=Slateport Museum(Oceanic Museum)
0178=Evolve Intro
017A=Unknown Victory 1
017B=Tuber Encounter
017C=Boy Encounter
017D=A Far-away Place (Shipwreck-Abandoned Ship)
017E=Fortree City
017F=Birch's Lab
0180=Battle Tower
0181=Swimmer Ecounter
0183=Got a Berry
0184=Unknown Victory 2
0185=Unknown Victory 3
0186=Unknown Victory 4
0187=Pay No Attention!
0188=Unknown Victory 1
0189=Beauty Contest 1
018A=Beauty Contest 2
018B=Beauty Contest 3
018C=Beauty Contest 4
018D=Ship Ecounter
018E=Verdanturf Town
018F=Rustboro City, Mauville City, Mossdeep City
0190=Pokemon Center
0191=Route Theme 5
0192=Route Theme 6
0193=Bicycle Ride
0195=Littleroot Town
0196=Sky Pillar, Mt.Chimney
0197=Girl Encounter
0198=Lilycove City
0199=The Sandy Desert
019A=Help Me! (Rescue Birch)
019B=Underwater Dive
019C=Trainer Defeat
019D=Title Screen
019F=May's Theme
01A0=Electric Encounter
01A1=Biker Encounter
01A2=Route Theme 7
01A3=Aqua Encounter
01A4=Show Me Around
01A5=Brendan's Theme
01A6=Evergrande City, Link-Zentrale
01A7=Psychic Encounter
01A8=Important Defeat
01A9=Riding the Cable Car
01AA=Game Corner
01AB=Dewford Town
01AC=Safari Zone
01AD=Path to Victory-Victory Road
01AE=Team Magma/Aqua Hideout
01AF=Sailing the Sea (MS Tide)
01B0=Mt.Pyre, Shoal Cave, New Mauville
01B1=Slateport City
01B2=The Fog of Mt. Pyre
01B3=Pokémon Trainer School
01B4=You're the Champ!
01B5=Lavaridge Town, Fallarbor Town
01B6=Desert Ruins, Island Cave, Ancient Tomb
01B7=Important Defeat 2
01B8=Beauty Contest
01B9=Magma Encounter
01BA=The Pokémon!
01BB=The Flood
01BC=The Drought
01BD=Sootopolis City
01BE=Berry Blending Results
01BF=Hall of Fame
01C0=You're Being Watched!
01C1=Kid Encounter
01C2=Elite Four Theme
01C3=Sailor Encounter
01C4=Beauty Contest Lobby (Pokemon Contest)
01C5=What's On TV?
01C6=Unknown Encounter
01C7=Ending Credits
01C8=The End!
01C9=Battle - Wild Pokémon
01CA=Battle - Aqua/Magma
01CB=Battle - Pokémon Trainer
01CC=Battle - Gym Leader
01CD=Battle - Champion Steven
01CE=Battle - Regirock, Regice and Registeel
01CF=Battle - Legendary Pokémon
01D0=Battle - Rival
01D1=Battle - Elite Four
01D2=Battle - Team Leader
01D3=Gold/Silver - Team Rocket (US Ruby Version Only)


0100=Healing (RS)
0101=Level Up
0107=Evolution Start
0109=Battle 1
010A=Battle 2
010C=Fanfare 1
010D=Fanfare 2
010E=You Fail It!
010F=You Fail It Again!
0110=Follow Me
0111=Game Corner
0112=Evil Lurks
0114=Jigglypuff's Song
0116=Pokemon Theme
0117=Cinnabar Island
0118=Lavender Town
011B=Encounter 1
011C=Encounter 2
011D=Encounter 3
011E=You're In The Hall Of Fame!
011F=Viridian Forest
0120=Mount Moon
0121=Abandoned Place
0122=End Credits
0123=Route Theme 1
0124=Route Theme 2 / Intro
0125=Route Theme 3
0126=Route Theme 4
0127=Indigo Plateau
0128=Battle 3
0129=Battle 4
012A=Battle 5
012B=Battle 6
012C=Pallet Town
012D=Oak's Lab
012E=Oak's Theme
012F=Pokémon Center
0130=SS Anne
0131=Surf's Up
0132=Pokémon Tower
0133=Silph Co.
0134=Cerulean City
0135=Celadon City
0136=Victory 1
0137=Victory 2
0138=Victory 3
0139=Vermillion City
013A=Viridian City
013B=Gary's Theme
013C=Gary's Theme (bis)
013D=Fanfare 3
013E=Fanfare 4
013F=You caught a Pokémon!
0140=Trainer Card Photo
0142=Victory 2 (bis)
0143=Intro Message 1
0144=Intro Message 2
0145=Intro Message 3
0146=Game Corner (+1)
0147=Game Corner (+2)
0148=Net Center
0149=Mystery Connection
014A=Game Corner (+3)
014B=Mount Ember
014C=Follow Me (alt)
014D=Water Labyrinth
014E=Tanoby Ruins
014F=Islands 1-3
0150=Islands 4-5
0151=Islands 6-7
0153=Battle - Deoxys
0154=Battle 5 (+1)
0155=Battle 5 (+2)
0156=Encounter 4
0157=Deoxys Encounter
0158=Trainer Tower
0159=Pallet Town (fame mix)
015A=Teachy TV


015E=Littleroot Town Test 'TETSUJI'
015F=GS - Route 38
0160=Wild Pokemon Defeat
0161=Wild Pokemon Defeat w/Intro
0162=Gym Leader Defeat
0163=Acquired Badge
0164=Crystal - Pokémon Center
0165=GS - Saffron City
0166=Crystal - Battle with Legendary Dogs
0167=Route Theme 1
0168=Route Theme 2
0169=Route Theme 3
016A=Petalburg City
016F=Level Up
0170=Pokemon Healed
0171=Big Victory
0172=Acquired Item
0173=Pokemon Caught
0174=Got TM/HM
0175Lilycove Museum
0176=Route Theme 4
0177=Slateport Museum
0178=Evolve Intro
017A=Unknown Victory 1
017B=Tuber Encounter
017C=Boy Encounter
017D=A Far-away Place
017E=Fortree City
017F=Birch's Lab
0180=Battle Tower
0181=Swimmer Encounter
0182=Meteor Falls
0183=Got a Berry
0184=Unknown Victory 1
0185=Unknown Victory 3
0186=Unknown Victory 4
0187=Pay No Attention!
0188=Unknown Theme 1
0189=Beauty Contest Test 1
018A=Beauty Contest Test 2
018B=Beauty Contest Test 3
018C=Beauty Contest Test 4
018D=Ship Encounter
018E=Verdanturf Town
018F=Rustboro City
0190=Pokémon Center
0191=Route Theme 5
0192=Route Theme 6
0193=Bicycle Ride
0195=Littleroot Town
0196=Sky Pillar
0197=Girl Encounter
0198=Lilycove City
0199=The Sandy Desert
019A=Help Me!
019B=Underwater Dive
019C=Trainer Defeat
019D=Title Screen
019F=May's Theme
01A0=Electric Encounter
01A1=Biker Encounter
01A2=Route Theme 7
01A3=Aqua Encounter
01A4=Show Me Around
01A5=Brendan's Theme
01A6=Evergrande City
01A7=Psychic Encounter
01A8=Important Defeat
01A9=Riding the Cable Car
01AA=Game Corner
01AB=Dewford Town
01AC=Safari Zone
01AD=Victory Road
01AE=Team Hideout
01AF=Sailing the Sea
01B0=Shoal Cave
01B1=Slateport City
01B2=The Fog of Mt. Pyre
01B3=Pokémon Trainer School
01B4=You're the Champ!
01B5=Lavaridge Town
01B6=Island Cave
01B7=Important 2 Defeat
01B8=Beauty Contest
01B9=Magma Encounter
01BA=The Pokémon!
01BB=The Flood
01BC=The Drought
01BD=Sootopolis City
01BE=Berry Blending Results
01BF=Hall of Fame
01C0=You're Being Watched!
01C1=Kid Encounter
01C2=Elite Four Theme
01C3=Sailor Encounter
01C4=Beauty Contest Lobby
01C5=What's On TV?
01C6=Unknown Encounter
01C7=Ending Credits
01C8=The End!
01C9=Battle Frontier
01CA=Battle Arena
01CB=Battle Point!
01CC=Registered Trainer
01CD=Battle Pyramid
01CE=Pyramid Top
01CF=Battle Palace
01D0=Rayquaza Enters
01D1=Battle Tower
01D2=Frontier Badge!
01D3=Dome Tournament
01D4=Battle Tube
01D5=Battle Factory
01D6=Battle - Legendary Pokémon
01D7=Battle - Frontier Brains
01D8=Battle - Mew
01D9=Battle Dome Lobby
01DA=Battle - Wild Pokémon
01DB=Battle - Aqua/Magma
01DC=Battle - Pokémon Trainer
01DD=Battle - Gym Leader
01DE=Battle - Champion Wallace
01DF=Battle - Regirock, Regice and Registeel
01E0=Battle - Legendary Pokémon
01E1=Battle - Rival
01E2=Battle - Elite Four
01E3=Battle - Team Leader
01E4=Follow Me
01E5=Game Corner
01E6=Evil Lurks
01E8=Jigglypuff's Song
01E9=Introduction (FRLG)
01EA=Pokémon Theme
01EB=Cinnabar Island
01EC=Lavender Town
01EF=Encounter 1
01F0=Encounter 2
01F1=Encounter 3
01F2=You're in the Hall Of Fame!
01F3=Viridian Forest
01F4=Mount Moon
01F5=Abandoned Place
01F6=End Credits (FRLG)
01F7=Route Theme 8
01F8=Route Theme 9 (FRLG Intro)
01F9=Route Theme 10
01FA=Route Theme 11
01FB=Indigo Plateau
01FC=Battle 3
01FD=Battle 4
01FE=Battle 5
01FF=Battle 6
0200=Pallet Town
0201=Oak's Lab
0202=Oak's Theme
0203=Pokémon Center
0204=SS Anne
0205=Surf's Up
0206=Pokémon Tower
0207=Silph Co.
0208=Cerulean City
0209=Celadon City
020A=Victory 1
020B=Victory 2
020C=Victory 3
020D=Vermillion City
020E=Viridian City
020F=Gary's Theme
0210=Gary's Theme (bis)
0211=Fanfare 3
0212=Fanfare 4
0213=You caught a Pokémon!
0214=Trainer Card Photo
0216=Victory 2 (bis)
0217=Intro Message 1
0218=Intro Message 2
0219=Intro Message 3
021A=Game Corner (+1)
021B=Game Corner (+2)
021C=Net Center
021D=Mystery Connection
021E=Game Corner (+3)
021F=Mount Ember
0220=Follow Me (alt)
0221=Sevii Island Paths
0222=Tanoby Ruins
0223=Islands 1-3
0224=Islands 4-5
0225=Islands 6-7
0227=Battle - Deoxys
0228=Battle 5 (+1)
0229=Battle 5 (+2)
022A=Encounter 4
022B=Deoxys Encounter
022C=Trainer Tower
022D=Pallet Town (fame mix)
022E=Teachy TV

It os bigger than ordinary text.

It is typical text size.



Universal Codes
\v\h01 - [player]
\v\h02 - [buffer1]
\v\h03 - [buffer2]
\v\h04 - [buffer3]
\v\h06 - [rival]

You can use either the code on the left or the words on the right, but you have to put the brackets.


Ruby & Sapphire & Emerald
\v\h07 - [game]
\v\h08 - [team]
\v\h09 - [otherteam]
\v\h0A - [teamleader]
\v\h0B - [otherteamleader]
\v\h0C - [legend]
\v\h0D - [otherlegend]

Again you could use any one of the codes or words.

Other Codes
Here are other XSE codes which can be used in a dialog script for the message to show special characters, for example, the horizontal ellipsis "...", the male and female glyph and so on.


[.] = ...
[$] = PokéYen
[m] = Male glyph
[f] = Female glyph
[Lv] = Lv.
[PK] = POKé
[MN] = MON
[PO] = PO
[Ke] = Ké
[BL] = BL
[OC] = OCK
[Po] = Po
[Ké] = ke

Here there are some extra codes, please note you need to use the code on the right side, since they're not really implemented into XSE. The bracketed codes on the left side are showed here just to understand their meaning. They've all been tested under FR/LG, therefore some of them may not be the same on the other games.

[BTN_A] \hF8\h00
[BTN_B] \hF8\h01
[BTN_L] \hF8\h02
[BRN_R] \hF8\h03
[BTN_START] \hF8\h04
[BTN_SEL] \hF8\h05
[DPAD_U] \hF8\h06
[DPAD_D] \hF8\h07
[DPAD_L] \hF8\h08
[DPAD_R] \hF8\h09
[DPAD_UD] \hF8\h0A
[DPAD_LR] \hF8\h0B
[DPAD] \hF8\h0C
[+] \hF9\04
[LV] \hF9\h05
[PP] \hF9\h06
[ID] \hF9\h07
[NO] \hF9\h08
_ \hF9\h09
[1] \hF9\h0A
[2] \hF9\h0B
[3] \hF9\h0C
[4] \hF9\h0D
[5] \hF9\h0E
[6] \hF9\h0F
[7] \hF9\h10
[8] \hF9\h11
[9] \hF9\h12
[DBLCIRCLE] \hF9\h15
[TRIANGLE] \hF9\h16
[CROSS] \hF9\h17
| \hF9\hD1
¯ \hF9\hD2
~ \hF9\hD3
[SIDE_U] \hF9\hD6
[L_EYE] \hF9\hD8
[R_EYE] \hF9\hD9
@ \hF9\hDA
[PLUS] \hF9\hDC
[MINUS] \hF9\hDD
[EQUAL] \hF9\hDE
[TOUNGE] \hF9\hE0
[TRIANGLE2] \hF9\hE1
[MOON] \hF9\hE8
[NOTE] \hF9\hE9
[GRASS] \hF9\hEC
[FIRE] \hF9\hED
[WATER] \hF9\hEE
[L_HAND] \hF9\hEF
[R_HAND] \hF9\hF0
[FLOWER] \hF9\F1
[EYE] \hF9\hF2
[EYE2] \hF9\hF3
[#] \hF9\hF4
[:(] \hF9\hF5
[:>] \hF9\hF6
[|:(] \hF9\hF7
[:o] \hF9\hF8
[^^] \hF9\hF9
[>:)] \hF9\hFA
[D:] \hF9\hFB
['_'] \hF9\hFC
[8O] \hF9\hFD
[D:(] \hF9\hFE
[LETS_GO] \hF9\hFF

HUH!!! But how to use these. Everything between the dotted lines is used at the beginning of the message, like so, imagine you want to have red text, type this into the text adjuster:

\c\h01\h04Hi there. How are you doing.

Remember to not leave a space between the code and the beginning of the message, and i don't think you can use two codes in the same message.
Now the other stuff. Lets say you want to place the players name in the message. But you don't know what the player's gonna name his character, so you use this:

Hi there \v\h01, how are you?

or you can use this:

Hi there [player], how are you?

Same for rival and other characters that you want to use. But again the last couple commands, only the code can be used, not what's in brackets. Sweat huh.



OK the new commands you have to learn here are:

bufferitems (same as above but for plural)

additem adds a certain amount of a certain item to the player's bag.
Form: additem 0x<item number> 0x<amount>
Remember that they have to be in hex.

removeitem removes a certain amount of a certain item from the players bag.
Form: removeitem 0x<item number> 0x<amount>
In hex.

checkitemroom checks if the player has an enough room for a certain item in his bag.
Form: checkitemroom 0x<item number> 0x<quantity>
Of course the quantity is how much to check for space. As in to check if the player has enough room for 5 potions for example. Also in hex. You'll learn how to use this command fully in the variables section. WHY ?? cause you know how to make the command check for the room, but not how to make it do two different things if the room exists or not. And again, like the message type 0x5(yes/no) the value 1 is assigned to the variable 0x800D if there is room, and you can use the compare and if commands on it. And the number 0 is assigned to the same variable if there isn't room.

checkitem checks if the player has a certain item in his bag.
Form: checkitem 0x<item number> 0x<quantity to check for>
Also in hex. You'll learn how to use this command fully in the variables section. And again, like the message type 0x5(yes/no) the value 1 is assigned to the variable 0x800D if the item is there, and you can use the compare and if commands on it. And the number 0 is assigned to the same variable if it isn't.

addpcitem adds a certain amount of a certain item to your pc.
Form: addpcitem 0x<item number> 0x<quantity to add>
Also in hex.

checkpcitem checks for a certain amount of a certain item in the player's pc.
Form: checkpcitem 0x<item number> 0x<quantity to check for>
Also in hex. You'll learn how to use this command fully in the variables section. And again, like the message type 0x5(yes/no) the value 1 is assigned to the variable 0x800D if the item is in the pc, and you can use the compare and if commands on it. And the number 0 is assigned to the same variable if it isn't.

bufferitem makes an item's name be stored in a buffer.
Form: bufferitem 0x<buffer number> 0x<item number>
The buffer number ranges from 1 to3. Read the message part and you'll know that the [buffer1] or [buffer2] or [buffer3] is now that item's name depending on the number you used in the command.
So if the message has [buffer1] or [buffer2] or [buffer3], then it would say the item's name in game.
Also in hex.

bufferitems stores a plural of an item's name in a buffer.
Form: bufferitems 0x<buffer number> 0x<item to store> 0x<quantity>
Also hex. But this time, all the same expect the quntity. Lets say you use buffer 1 and the item potion and the quantity 5. Then [buffer1] would stand for "5 potions". This only works for FireRed and LeafGreen.

bufferitems2 is same as before but it's only for Emerald.

giveitem gives the player a certain amount of a certain item and displays the message "[player] obtained/found item". Yes it can either be obtained or found, depending on the type you choose.
Form: giveitem 0x<item number> 0x<quantity> 0x<message type>
the message type can either be 0 for obtained, or 1 for found. Again in hex.

giveitem2 same as before but instead of showing a message it plays a certain song.
Form: giveitem2 0x<item number> 0x<quantity> 0x<song to play>
Again in hex. The <song to play> is the number of the song to play.

giveitem3 gives a decoration and displays a message by itself.
Form: giveitem3 0x<decoration number>
Again in hex.
You can choose a song from the above list for the giveitem2 command. You have to change the amount and quantity and item number and decoration number to hex.

Here's a list of items:


Master Ball 1
Ultra Ball 2
Great Ball 3
Poké Ball 4
Safari Ball 5
Net Ball 6
Dive Ball 7
Nest Ball 8
Repeat Ball 9
Timer Ball 10
Luxury Ball 11
Premier Ball 12
Potion 13
Antidote 14
Burn Heal 15
Ice Heal 16
Awakening 17
Parlyz Heal 18
Full Restore 19
Max Potion 20
Hyper Potion 21
Super Potion 22
Full Heal 23
Revive 24
Max Revive 25
Fresh Water 26
Soda Pop 27
Lemonade 28
Moomoo Milk 29
Energypowder 30
Energy Root 31
Heal Powder 32
Revival Herb 33
Ether 34
Max Ether 35
Elixir 36
Max Elixir 37
Lava Cookie 38
Blue Flute 39
Yellow Flute 40
Red Flute 41
Black Flute 42
White Flute 43
Berry Juice 44
Sacred Ash 45
Shoal Salt 46
Shoal Shell 47
Red Shard 48
Blue Shard 49
Yellow Shard 50
Green Shard 51
HP Up 63
Protein 64
Iron 65
Carbos 66
Calcium 67
Rare Candy 68
PP Up 69
Zinc 70
PP Max 71
Guard Spec. 73
Dire Hit 74
X Attack 75
X Defend 76
X Speed 77
X Accuracy 78
X Special 79
Poké Doll 80
Fluffy Tail 81
Super Repel 83
Max Repel 84
Escape Rope 85
Repel 86
Sun Stone 93
Moon Stone 94
Fire Stone 95
Thunderstone 96
Water Stone 97
Leaf Stone 98
Tinymushroom 103
Big Mushroom 104
Pearl 106
Big Pearl 107
Stardust 108
Star Piece 109
Nugget 110
Heart Scale 111
Orange Mail 121
Harbor Mail 122
Glitter Mail 123
Mech Mail 124
Wood Mail 125
Wave Mail 126
Bead Mail 127
Shadow Mail 128
Tropic Mail 129
Dream Mail 130
Fab Mail 131
Retro Mail 132
Cheri Berry 133
Chesto Berry 134
Pecha Berry 135
Rawst Berry 136
Aspear Berry 137
Leppa Berry 138
Oran Berry 139
Persim Berry 140
Lum Berry 141
Sitrus Berry 142
Figy Berry 143
Wiki Berry 144
Mago Berry 145
Aguav Berry 146
Iapapa Berry 147
Razz Berry 148
Bluk Berry 149
Nanab Berry 150
Wepear Berry 151
Pinap Berry 152
Pomeg Berry 153
Kelpsy Berry 154
Qualot Berry 155
Hondew Berry 156
Grepa Berry 157
Tamato Berry 158
Cornn Berry 159
Magost Berry 160
Rabuta Berry 161
Nomel Berry 162
Spelon Berry 163
Pamtre Berry 164
Watmel Berry 165
Durin Berry 166
Belue Berry 167
Liechi Berry 168
Ganlon Berry 169
Salac Berry 170
Petaya Berry 171
Apicot Berry 172
Lansat Berry 173
Starf Berry 174
Enigma Berry 175
Brightpowder 179
White Herb 180
Macho Brace 181
Exp. Share 182
Quick Claw 183
Soothe Bell 184
Mental Herb 185
Choice Band 186
King's Rock 187
Silverpowder 188
Amulet Coin 189
Cleanse Tag 190
Soul Dew 191
Deepseatooth 192
Deepseascale 193
Smoke Ball 194
Everstone 195
Focus Band 196
Lucky Egg 197
Scope Lens 198
Metal Coat 199
Leftovers 200
Dragon Scale 201
Light Ball 202
Soft Sand 203
Hard Stone 204
Miracle Seed 205
Blackglasses 206
Black Belt 207
Magnet 208
Mystic Water 209
Sharp Beak 210
Poison Barb 211
Nevermeltice 212
Spell Tag 213
Twistedspoon 214
Charcoal 215
Dragon Fang 216
Silk Scarf 217
Up-grade 218
Shell Bell 219
Sea Incense 220
Lax Incense 221
Lucky Punch 222
Metal Powder 223
Thick Club 224
Stick 225
Red Scarf 254
Blue Scarf 255
Pink Scarf 256
Green Scarf 257
Yellow Scarf 258
Mach Bike 259
Coin Case 260
Itemfinder 261
Old Rod 262
Good Rod 263
Super Rod 264
S.S. Ticket 265
Contest Pass 266
Wailmer Pail 268
Devon Goods 269
Soot Sack 270
Basement Key 271
Acro Bike 272
PokéBlock Case 273
Letter 274
Eon Ticket 275
Red Orb 276
Blue Orb 277
Scanner 278
Go-goggles 279
Meteorite 280
Rm. 1 Key 281
Rm. 2 Key 282
Rm. 4 Key 283
Rm. 6 Key 284
Storage Key 285
Root Fossil 286
Claw Fossil 287
Devon Scope 288
TM01 289
TM02 290
TM03 291
TM04 292
TM05 293
TM06 294
TM07 295
TM08 296
TM09 297
TM10 298
TM11 299
TM12 300
TM13 301
TM14 302
TM15 303
TM16 304
TM17 305
TM18 306
TM19 307
TM20 308
TM21 309
TM22 310
TM23 311
TM24 312
TM25 313
TM26 314
TM27 315
TM28 316
TM29 317
TM30 318
TM31 319
TM32 320
TM33 321
TM34 322
TM35 323
TM36 324
TM37 325
TM38 326
TM39 327
TM40 328
TM41 329
TM42 330
TM43 331
TM44 332
TM45 333
TM46 334
TM47 335
TM48 336
TM49 337
TM50 338
HM01 339
HM02 340
HM03 341
HM04 342
HM05 343
HM06 344
HM07 345
HM08 346
Oak's Parcel 349
Poké Flute 350
Secret Key 351
Bike Voucher 352
Gold Teeth 353
Old Amber 354
Card Key 355
Lift Key 356
Helix Fossil 357
Dome Fossil 358
Silph Scope 359
Bicycle 360
Town Map 361
VS Seeker 362
Fame Checker 363
TM Case 364
Berry Pouch 365
Teachy TV 366
Tri-pass 367
Rainbow Pass 368
Tea 369
Mysticticket 370
Auroraticket 371
Powder Jar 372
Ruby 373
Sapphire 374
But please people, if you know an item doesn't exist in the game your hacking don't give it or you'll get yourself trouble. This list is for FR and LG.

Ok guys, were moving on to PEDRO12's Everything Tutorial part 2, cause there are too many characters here.

Last edited by Echidna; March 11th, 2011 at 07:28 AM.
Reply With Quote