• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Forum moderator applications are now open! Click here for details.
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Simple Guide to Replacing Pokemon Sprites (FR/LG/R/S)

Maco

learning the ropes...
72
Posts
14
Years
After looking through every tutorial I could find, each with their own confusing text and some with incomplete steps, I've decided to make my own guide to replacing Pokemon sprites for the GBA generation. I use Photoshop for any spriting, and the ROM is FireRed, so this guide is focused on that.



Before Starting​


Tools you will need:
  1. A graphics editing program.
    The most popular program for this is Microsoft Paint, simply because it comes for free with every copy of Windows. Personally I do not recommend it because it is a very basic program, and not that easy to use. I use Photoshop, simply because it is the best graphics editing program money can buy. A decent free alternative is Graphics Gale. (link)
  2. unLZ GBA (link, scroll down to it).
    This little program reads through your Pokemon ROM and displays all the compressed images within the ROM. It also can replace compressed images within the game. (Compressed means that the image file is shrunk in size to save space on the ROM). Every Pokemon sprite and trainer sprite is compressed in the GBA ROMs, so you will need this tool to edit your Pokemon.
  3. Free Space Finder (link, scroll down to it).
    This program does what its name says: it finds free space in your ROM. If your new sprite is bigger than the original sprite, it is impossible to write over the original without ruining the rest of the ROM. Instead, we can write the new picture into the empty space, and tell the game to use that image instead of the original.


Tools you might need (if not using Photoshop):
  1. IrfanView (link)
    This program is primarily for indexing your new Pokemon sprite. I will explain what indexing is and how to do it later in the guide.



Overview​


What we are going to do:
  1. Use unLZ to locate a sprite in the ROM, and export this sprite so we can edit it.
  2. Properly colour and index the new edited sprite.
  3. Use Free Space Finder to find a suitable location for the new sprite.
  4. Import the new sprite into the ROM and replace the old one.

General Knowledge and Definitions:
  • A sprite in a ROM is made up of two parts: a palette and the indexed image itself
  • What is indexing?
    An indexed image stores an image as two matrices. The first matrix has the same size as the image and one number for each pixel. The second matrix is called the color map and its size may be different from the image. The numbers in the first matrix is an instruction of what number to use in the color map matrix.
    In our case, the second matrix is in fact our palette.
  • A palette is just a file that contains the colours to be used in the indexed image. For the Pokemon games, a palette can only contain 16 colours. This means your edited sprite can only use 16 colours (one of which must be the background colour, so only 15 usable colours in the palette).
  • For Pokemon sprites, the image file must be 64x64 pixels in size, no more, no less.
  • The first colour in the palette is transparent in-game.

Method​


Part 1: Locating and exporting a sprite
  1. Open up your clean ROM with unLZ. Wait a little bit for it to load the images.

    unlzdescription.png


    Now you have to find the sprite you wish to replace. Pokemon sprites begin at around Goto 670 in Fire Red (may be different for R/S). Just type in 670, click goto, and click "Next" until you find the sprite you want to replace. I went to Goto 674, Charmander.

    unlzsaveasexample.png
  2. Click "Save As" and save the picture as a .png somewhere memorable.
    There, Part 1 done! :)


Part 2: Colouring and indexing the sprite
  1. Make a new document in your graphics editing program. Make sure it is 64x64 pixels in size.
  2. Draw or copy/paste your new sprite into this window. You can use the saved image from Part 1 as reference. Remember to only use 15 colours in the picture. If you accidentally use more than 15 colours, you can use Photoshop/IrfanView to reduce the colours to 15 (more on that later). In my case I created a Charmander in a different pose, based on the sprite from Pokemon Yellow.

    charmanderoriginal.png
    charmanderd.png
  3. Choose a colour for the background of your new sprite. Make sure that this colour is not used in the actual sprite itself. I used a creamy-greeny-white.

    charmanderrvfinal.png
  4. Indexing time! This is the hard part, although if you have Photoshop, this is quite easy:
    Spoiler:

    But what if you don't have Photoshop? Here's my guide to indexing using IrfanView:
    Spoiler:


Part 3: Finding Free Space
  1. Open up Free Space Finder. Click File, Open ROM, and browse to the ROM you want.
  2. Now look at the file size of the indexed sprite you wish to insert. For my Charmander, it is 3.99KB (let's just round up to 4KB)

    filesize.png


    Convert this number to bytes here. In my case, 4KB = 4096 bytes. Enter this value into Free Space Finder, and click search.

    fsf1.png


    See the "800000" in the box on the right? This is the location in the ROM of some free space big enough to hold you new sprite. There, Part 3 done. We are maybe 20 seconds away from your new sprite being in-game.


Part 4: Importing the New Sprite
  1. Open up unLZ again. Open up the ROM you want. Browse to the sprite you want to replace, for me it is Goto 674 (Charmander).
  2. Now click Import. Browse to your freshly indexed sprite. You should see your new sprite as the picture on the left. Click Write to ROM. Tick all three boxes up top, and change the image offset value to the number that came up in Free Space Finder.

    unlzwritetorom1.png


    unlzwritetorom2.png


    Click OK, and close unLZ. Open up the ROM in your emulator of choice, and behold the magnificence of your new sprite! Here's how mine turned out:



Bugs Guide​


  1. Picture all scrambled, dots/lines randomly everywhere:
    Either your sprite wasn't 64x64 pixels or you have inserted the sprite in a place where there isn't enough room for it. Also, you may have inserted something else over the top of sprite by accident.
  2. Colours all messed up:
    Either you made a mistake with the palette, or just didn't replace it somehow.
  3. Background colour showing:
    Make sure the first colour in your palette is the background colour.
  4. Crashing:
    Probably have inserted the sprite over some important data. Make sure you are using FSF properly, and start afresh with a new ROM.
  5. "Image is not indexed, aborting" error in unLZ:
    Exactly what it says. If you used the IrfanView method to index, make ABSOLUTELY sure you used only 16 colours in the correctly coloured sprite.
Conclusion​


Well I sincerely hope this guide works for you. I've tried to integrate the theory of inserting sprites too, instead of just putting up instructions. If you like this guide or have any comments feel free to drop me a message sometime, although I am quite busy at the moment so I mightn't be able to reply.

Special Thanks

...to HackMew, Deviation and other forum members for answering my own noob questions, and for various guides. Thanks to HackMew again for his great toolset too.





:bandit:
 
Last edited by a moderator:
1,323
Posts
16
Years
  • Seen Dec 9, 2023
You could just save the original sprite as a png file with unLZ, and then paste the new sprite into the png file, since unLZ already indexes the file for you. There's no need for Photoshop.
 

558122_DG

Learning how to make mistakes
737
Posts
14
Years
  • Seen May 27, 2021
well, anyways this is a very clear tutorial, and you've described everything nicely ;)
good job on your first tutorial :)
 

Maco

learning the ropes...
72
Posts
14
Years
You could just save the original sprite as a png file with unLZ, and then paste the new sprite into the png file, since unLZ already indexes the file for you. There's no need for Photoshop.

I used Photoshop simply because I made the sprite in it, and because it is familiar to me. Also I did use a few different colours for my revamp, as H2O Turquoise said.

good job on your first tutorial :)

Thanks :)
 
3,411
Posts
15
Years
  • Age 28
  • Seen Mar 25, 2024
I used Photoshop simply because I made the sprite in it, and because it is familiar to me. Also I did use a few different colours for my revamp, as H2O Turquoise said.

Yeah, it is familiar to you, but not everyone owns PhotoShop, so it would be better to use a free programme like IrfanView.
 

Pokepal17

More cowbell~
1,519
Posts
15
Years
Well done. This is a very detailed tutorial. :3 However, you should include that part to see if you don't need to repoint, because that will save space. :3
 

xzibit29

It BurnZ
1
Posts
14
Years
How about if I/you want to change the Fire Red Title Screen pokemon(Charizard)? I can't see one if I use search..please PM me. Thanks
 

Maco

learning the ropes...
72
Posts
14
Years
Yeah, it is familiar to you, but not everyone owns PhotoShop, so it would be better to use a free programme like IrfanView.

There are guides for using IrfanView, and I linked to them in case people didn't have Photoshop. But if you're serious about pixel art and mapping you should probably have a copy anyway.

Well done. This is a very detailed tutorial. :3 However, you should include that part to see if you don't need to repoint, because that will save space. :3

Thanks :) Usually with edited sprites they are slightly larger than the originals, so for the most part you'd have to repoint. It's just less confusing this way.

How about if I/you want to change the Fire Red Title Screen pokemon(Charizard)? I can't see one if I use search..please PM me. Thanks

Replacing the Charizard on the title screen is completely different to replacing Pokemon sprites (and a lot harder to explain). There are several guides in this forum to replace it, search for "titlescreen".
 
Last edited:

Kronos

Shooting Star
212
Posts
19
Years
Whenever I try to import the indexed sprite, it gives me an error saying the sprite is not indexed? Do you have any fixes for this?

*edit* Nevermind. Apparently, if transparency is checked, the image will not work. Can you add this so others don't make this same mistake?
 
Last edited:

Maco

learning the ropes...
72
Posts
14
Years
Whenever I try to import the indexed sprite, it gives me an error saying the sprite is not indexed? Do you have any fixes for this?

*edit* Nevermind. Apparently, if transparency is checked, the image will not work. Can you add this so others don't make this same mistake?

Added. I might also do a little section on IrfanView like some people have suggested.
Edit: The IrfanView guide is up. Hope somebody finds this useful.
 
Last edited:
10
Posts
14
Years
  • Seen Apr 17, 2011
oh, thanx!
when we've repointed some times have bugged or the pokémon or the intro or other image...
but now you show me how to make
 

Kronos

Shooting Star
212
Posts
19
Years
Added. I might also do a little section on IrfanView like some people have suggested.
Edit: The IrfanView guide is up. Hope somebody finds this useful.

The tutorial is very useful ^^ It's very straightforward and explains everything nicely.
 

Opalescent

Ninja Mapper
39
Posts
14
Years
  • Seen May 25, 2012
Excellent Tutorial

This tutorial is fantastic
Mine keeps bugging up though
I'll just have to try and figure out where its going wrong.
This guide makes it a lot easier to spot the errors I make :)
 

Maco

learning the ropes...
72
Posts
14
Years
This tutorial is fantastic
Mine keeps bugging up though
I'll just have to try and figure out where its going wrong.
This guide makes it a lot easier to spot the errors I make :)
How is it bugging up? I might be able to help.
Are the colours messed up, or the background is showing, etc?
 
3
Posts
14
Years
  • Seen Aug 22, 2010
This tutorial is fantastic
Mine keeps bugging up though
I'll just have to try and figure out where its going wrong.
This guide makes it a lot easier to spot the errors I make :)
mine is buggy too...The colors arent right sometimes,it looks like a red storm cloud,It crashes everything,its a bad egg,or it just wont change...
 
Last edited:

hack1

Dragon Green
141
Posts
14
Years
  • Seen Jul 11, 2015
I used same colours but it still gives an error.
 

Shiny Quagsire

I'm Still Alive, Elsewhere
697
Posts
14
Years
Try inserting it without using FSF. It will give you an error and a number. Open calculator, goto scientific, then go to the hex radio button. Paste your error number. Now click on the dec radio button. Copy that number, and paste it into the dec textbox. Tell me if it helped. :)
 
Back
Top