- 2,048
- Posts
- 17
- Years
- Seen Sep 7, 2023
Advanced Series
As the title suggests, this is a series of tools for hacking the GBA Pokémon games. I'm currently focusing on tools for inserting new Pokémon and sprites.
Quick Notes
These tools are written in Visual Basic 9, which is part of the .NET framework. Therefore, to run these tools, you will need to have the .NET framework installed on your computer. It can be downloaded for free from Microsoft. You may as well get it now, since other programs you might want to use later may use it.
Also, I'm a beginner at VB. Because I know other languages, my code should be pretty good; however, there are definitely bugs in it somewhere :P If you find any bugs, could you post them in this thread, or VM me them?
Advanced Pokémon Icon Editor (APIE)
Advanced Sprite Position Editor (ASPE)
Advanced Pokémon Sprite Editor (APSE)
Download
A-Series 1.04 (complete package) - 08/10/09
Download from FileFront (.zip, 159KB)
Download from 2Shared (.zip, 159KB)
Download from MegaUpload (.zip, 159KB)
Old Downloads
A-Series 1.03 (complete package) - 05/10/09
Download from FileFront (.zip, 157KB)
Download from 2Shared (.zip, 157KB)
Download from MegaUpload (.zip, 157KB)
A-Series 1.02 (complete package) - 04/10/09
Download from FileFront (.zip, 157KB)
Download from 2Shared (.zip, 157KB)
Download from MegaUpload (.zip, 157KB)
A-Series 1.01 (complete package) - 28/09/09
Download (.zip, 157KB)
A-Series 1.00 (complete package) - 27/09/09
Download (.zip, 151KB)
Changelog
1.04
1.03
1.02
1.01
Happy hacking!
EDIT (giradialkia here): https://dl.dropbox.com/u/34957059/Advanced Series.rar
Here is a renewed link for the programs.
As the title suggests, this is a series of tools for hacking the GBA Pokémon games. I'm currently focusing on tools for inserting new Pokémon and sprites.
Quick Notes
These tools are written in Visual Basic 9, which is part of the .NET framework. Therefore, to run these tools, you will need to have the .NET framework installed on your computer. It can be downloaded for free from Microsoft. You may as well get it now, since other programs you might want to use later may use it.
Also, I'm a beginner at VB. Because I know other languages, my code should be pretty good; however, there are definitely bugs in it somewhere :P If you find any bugs, could you post them in this thread, or VM me them?
Advanced Pokémon Icon Editor (APIE)
Spoiler:
Quick Instructions:
Features:
Main interface
Import Icon dialog
Support for an extended Pokédex
In-depth Instructions
The File menu commands are: Open ROM, Save all changes, Import image, and Export image.
The Species Name and Species Number boxes change the current species. Any changes made to icons will be kept in memory, so you don't have to worry about writing to the ROM before switching species.
The Repoint button allows you to repoint the icon; this is useful for editing the ?????????? Pokémon.
The Palette ID box allows you to change the palette of an icon. There are 3 palettes to choose from.
The Write To ROM button writes the icon data of the currently selected Pokémon to the ROM.
The Revert button reloads the current icon image from the ROM.
The Import Image dialog automatically selects a palette depending on the colours in the image, and recolours it to that palette. The palette to which it is recoloured can be changed using the Palette box.
The Auto-Transparency checkbox will ensure that the colour used at the top-left corner of the imported image is treated as the first colour in the palette (the transparent colour), and stops any others from being assigned that colour. This prevents transparency issues in-game.
The Repoint dialog shows the length of the icon data, and two offsets. The start offset is editable; however, to ensure that important data is not overwritten, the actual offset to be written to is shown below. To set the write offset to the start offset, click the Set Write Offset button. Ensure that you have enough free space at that offset first.
The Find Free Space button searches the ROM after the start offset for a suitable amount of free space, and sets the write offset to the free space offset. Finding free space may take a few seconds, depending on the start offset.
Clicking OK copies the icon data to the write offset, and repoints the relevant offset in the icon table.
- Open your ROM with the tool (Ctrl+O)
- Select a Pokémon from the list
- Import a 32x64 image into the tool (Ctrl+I)
- Click OK
- Click Write To ROM
Features:
- Imports non-indexed .png, .bmp, .gif and .jpg images
- Exports .png images
- Automatically selects a matching palette, and converts the icon to it
- Won't complain if your icon has over 16 colours
- Ability to change the palette of an icon
Spoiler:
Main interface
Import Icon dialog
Support for an extended Pokédex
In-depth Instructions
The File menu commands are: Open ROM, Save all changes, Import image, and Export image.
- Open ROM: Opens a .GBA ROM
- Save all changes: Saves all changes to icons. Useful if you're changing multiple icons.
- Import image: After selecting an image file, opens the Import Image dialog.
- Export image: Saves the current icon as a .png file.
The Species Name and Species Number boxes change the current species. Any changes made to icons will be kept in memory, so you don't have to worry about writing to the ROM before switching species.
The Repoint button allows you to repoint the icon; this is useful for editing the ?????????? Pokémon.
The Palette ID box allows you to change the palette of an icon. There are 3 palettes to choose from.
The Write To ROM button writes the icon data of the currently selected Pokémon to the ROM.
The Revert button reloads the current icon image from the ROM.
The Import Image dialog automatically selects a palette depending on the colours in the image, and recolours it to that palette. The palette to which it is recoloured can be changed using the Palette box.
The Auto-Transparency checkbox will ensure that the colour used at the top-left corner of the imported image is treated as the first colour in the palette (the transparent colour), and stops any others from being assigned that colour. This prevents transparency issues in-game.
The Repoint dialog shows the length of the icon data, and two offsets. The start offset is editable; however, to ensure that important data is not overwritten, the actual offset to be written to is shown below. To set the write offset to the start offset, click the Set Write Offset button. Ensure that you have enough free space at that offset first.
The Find Free Space button searches the ROM after the start offset for a suitable amount of free space, and sets the write offset to the free space offset. Finding free space may take a few seconds, depending on the start offset.
Clicking OK copies the icon data to the write offset, and repoints the relevant offset in the icon table.
Advanced Sprite Position Editor (ASPE)
Spoiler:
Quick Instructions:
Features:
Main interface
Modifying the altitude of an inserted sprite
In-depth Instructions
The File menu commands are Open ROM and Save all changes.
The Species Name and Species Number boxes change the current species. Any changes made to positions will be kept in memory, so you don't have to worry about writing to the ROM before switching species.
The Player Y box changes the vertical position of the back (player) sprite. Increasing the Player Y makes the sprite move downwards, and vice-versa. Values can be between -128 and 127.
The Enemy Y box changes the vertical position of the front (enemy) sprite. Increasing the Enemy Y makes the sprite move downwards, and vice-versa. Values can be between -128 and 127.
The Enemy Altitude box changes the vertical position of the front (enemy) sprite, and controls whether a shadow is displayed or not. Increasing the Enemy Altitude makes the sprite move upwards, and vice-versa. When the value is 0, no shadow is displayed. Values can be between -128 and 127.
The Auto-Position button automatically adjusts both the player and enemy Y values so the sprite is positioned correctly, according to the official sprites. This means that the player sprite will touch the message box at the bottom, and the enemy sprite will be 40 pixels above it. It does not affect the enemy altitude value.
The Write To ROM button writes the sprite position data of the currently selected Pokémon to the ROM.
The Revert button reloads the sprite position data of the current Pokémon from the ROM.
DO NOT edit the position of the Egg and alternate Unown sprites. They don't actually have sprite position data; attempting to edit them may overwrite other important data in the ROM.
- Open your ROM with the tool (Ctrl+O)
- Select a Pokémon from the list
- Click Auto-Position
- Adjust the Enemy Altitude to add/remove a shadow
- Click Write To ROM
- DO NOT edit the positions of the Egg and alternate Unown sprites at the end
Features:
- Modifies the player and enemy sprites' vertical positions
- Modifies the enemy sprite's altitude (to add/remove a shadow)
- Automatically gets the Y values from the player/enemy sprites
- Loads sprites from the ROM, so is compatible with custom sprites
Spoiler:
Main interface
Modifying the altitude of an inserted sprite
In-depth Instructions
The File menu commands are Open ROM and Save all changes.
- Open ROM: Opens a .GBA ROM
- Save all changes: Saves all changes to sprite positions. Useful if you're changing the positions of multiple Pokémon.
The Species Name and Species Number boxes change the current species. Any changes made to positions will be kept in memory, so you don't have to worry about writing to the ROM before switching species.
The Player Y box changes the vertical position of the back (player) sprite. Increasing the Player Y makes the sprite move downwards, and vice-versa. Values can be between -128 and 127.
The Enemy Y box changes the vertical position of the front (enemy) sprite. Increasing the Enemy Y makes the sprite move downwards, and vice-versa. Values can be between -128 and 127.
The Enemy Altitude box changes the vertical position of the front (enemy) sprite, and controls whether a shadow is displayed or not. Increasing the Enemy Altitude makes the sprite move upwards, and vice-versa. When the value is 0, no shadow is displayed. Values can be between -128 and 127.
The Auto-Position button automatically adjusts both the player and enemy Y values so the sprite is positioned correctly, according to the official sprites. This means that the player sprite will touch the message box at the bottom, and the enemy sprite will be 40 pixels above it. It does not affect the enemy altitude value.
The Write To ROM button writes the sprite position data of the currently selected Pokémon to the ROM.
The Revert button reloads the sprite position data of the current Pokémon from the ROM.
DO NOT edit the position of the Egg and alternate Unown sprites. They don't actually have sprite position data; attempting to edit them may overwrite other important data in the ROM.
Advanced Pokémon Sprite Editor (APSE)
Spoiler:
Quick Instructions:
Features:
Main interface
Edit Sprite dialog
Write to ROM dialog
In-depth Instructions
The File menu commands are: Open ROM, Save all changes, and Export image.
The Species Name and Species Number boxes change the current species. Any changes made to sprites will be kept in memory, so you don't have to worry about writing to the ROM before switching species.
The Frame box changes the form or frame displayed. It is disabled if the Pokémon only has one frame in its sprite.
The Write To ROM button brings up the Write To ROM dialog.
The Revert button reloads the current Pokémon sprites from the ROM.
The Edit dialog has three main sections. The top section contains the imported sprites, and the frame select and import buttons. The middle section deals with the palettes, and the bottom section shows how the sprites will look in-game.
The Frame box simply changes the frame shown.
The Import buttons under each sprite allow you to import a sprite. It must be 64 pixels wide. If the sprite is 64 pixels tall, it will replace the current frame; if it is taller, it will replace multiple frames (starting from the first one). This can be used to easily insert animated into Emerald (once an INI is made).
The Import All button takes a 256 pixel wide image, in the same format as the images saved by the Export function (i.e. the same order as the sprites are shown in the Edit dialog). It can also take images taller than 64 pixels in the same way as the normal Import buttons.
The Auto-Transparency checkbox will ensure that the colour used at the top-left corner of the imported image is treated as the first colour in the palette (the transparent colour), and stops any others from being assigned that colour. This prevents transparency issues in-game.
The colours in the palettes are clickable. Single clicking a palette entry, then clicking on the imported sprite, will change the colour in the palette to that of the clicked pixel. Double-clicking will bring up a colour selection dialog.
The Synchronise Palettes button creates palettes from the imported sprites, and indexes the sprites to be inserted accordingly, matching the normal to the shiny palette. It will only work if the normal and shiny sprites are identical, other than the colours, and won't work with images with compression artefacts (such as .jpgs). It will account for different numbers of colours on front/back or normal/shiny sprites, such as with Magnemite or Budew.
The Update Sprite Palette button simply recolours the sprite to be inserted to match the current palette. If you edit the palette, be sure to click this button when you're done.
The Write To ROM dialog shows the length of the compressed data, and two offsets. The start offset is editable; however, to ensure that important data is not overwritten, the actual offset to be written to is shown below. To set the write offset to the start offset, click the Set Write Offset button. Ensure that you have enough free space at that offset first.
The Find Free Space button searches the ROM after the start offset for a suitable amount of free space, and sets the write offset to the free space offset. Finding free space may take a few seconds, depending on the start offset.
Clicking OK writes the sprite data to the ROM, and repoints the relevant offsets in the sprite/palette tables.
- Open your ROM with the tool (Ctrl+O)
- Select a Pokémon from the list
- Click the Edit button
- Click the Import buttons underneath each sprite, and select the corresponding image (make sure that the normal and shiny sprites are the same, just with different colours)
- Click Synchronize Palettes to fix the palettes
- Click OK
- Click Write To ROM
- Type the offset to write the sprite to in the Start Offset box
- Click Find Free Space
- Click OK
Features:
- Imports non-indexed .png, .bmp, .gif and .jpg images
- Exports .png images
- Won't complain if your sprite has over 16 colours
- Gets a modifiable 16-colour palette from an imported image
- Automatically indexes the image
- Handles tricky palette situations, such as when the shiny sprite has a different number of colours to the normal sprite
- Edits sprites of alternate forms and second frames (however, Castform uses different palettes for its forms, so you'll have to edit those manually)
- Built-in free space finder
- Can import multiple sprites in one image (for example, the normal, shiny, back, and shiny back sprites)
- Automatically repoints offsets in the sprite/palette tables
Spoiler:
Main interface
Edit Sprite dialog
Write to ROM dialog
In-depth Instructions
The File menu commands are: Open ROM, Save all changes, and Export image.
- Open ROM: Opens a .GBA ROM
- Save all changes: Saves all changes to sprites. Useful if you're changing multiple sprites. All the sprites will be written to the ROM at one offset.
- Import all images: Imports all images from a folder named #.png or ###.png, with # meaning the species number (not national dex number). The sprites should be in the same format used for the Import All function in the Edit Sprite window. This function may take a long time if you import a large number of sprites; for example, importing a sprite for each Pokémon will take between 15-30 minutes.
- Export image: Saves the current sprites as a .png file (256x64 pixels, in the order: normal front, shiny front, normal back, and shiny back).
The Species Name and Species Number boxes change the current species. Any changes made to sprites will be kept in memory, so you don't have to worry about writing to the ROM before switching species.
The Frame box changes the form or frame displayed. It is disabled if the Pokémon only has one frame in its sprite.
The Write To ROM button brings up the Write To ROM dialog.
The Revert button reloads the current Pokémon sprites from the ROM.
The Edit dialog has three main sections. The top section contains the imported sprites, and the frame select and import buttons. The middle section deals with the palettes, and the bottom section shows how the sprites will look in-game.
The Frame box simply changes the frame shown.
The Import buttons under each sprite allow you to import a sprite. It must be 64 pixels wide. If the sprite is 64 pixels tall, it will replace the current frame; if it is taller, it will replace multiple frames (starting from the first one). This can be used to easily insert animated into Emerald (once an INI is made).
The Import All button takes a 256 pixel wide image, in the same format as the images saved by the Export function (i.e. the same order as the sprites are shown in the Edit dialog). It can also take images taller than 64 pixels in the same way as the normal Import buttons.
The Auto-Transparency checkbox will ensure that the colour used at the top-left corner of the imported image is treated as the first colour in the palette (the transparent colour), and stops any others from being assigned that colour. This prevents transparency issues in-game.
The colours in the palettes are clickable. Single clicking a palette entry, then clicking on the imported sprite, will change the colour in the palette to that of the clicked pixel. Double-clicking will bring up a colour selection dialog.
The Synchronise Palettes button creates palettes from the imported sprites, and indexes the sprites to be inserted accordingly, matching the normal to the shiny palette. It will only work if the normal and shiny sprites are identical, other than the colours, and won't work with images with compression artefacts (such as .jpgs). It will account for different numbers of colours on front/back or normal/shiny sprites, such as with Magnemite or Budew.
The Update Sprite Palette button simply recolours the sprite to be inserted to match the current palette. If you edit the palette, be sure to click this button when you're done.
The Write To ROM dialog shows the length of the compressed data, and two offsets. The start offset is editable; however, to ensure that important data is not overwritten, the actual offset to be written to is shown below. To set the write offset to the start offset, click the Set Write Offset button. Ensure that you have enough free space at that offset first.
The Find Free Space button searches the ROM after the start offset for a suitable amount of free space, and sets the write offset to the free space offset. Finding free space may take a few seconds, depending on the start offset.
Clicking OK writes the sprite data to the ROM, and repoints the relevant offsets in the sprite/palette tables.
Download
A-Series 1.04 (complete package) - 08/10/09
Download from FileFront (.zip, 159KB)
Download from 2Shared (.zip, 159KB)
Download from MegaUpload (.zip, 159KB)
Old Downloads
Spoiler:
A-Series 1.03 (complete package) - 05/10/09
Download from FileFront (.zip, 157KB)
Download from 2Shared (.zip, 157KB)
Download from MegaUpload (.zip, 157KB)
A-Series 1.02 (complete package) - 04/10/09
Download from FileFront (.zip, 157KB)
Download from 2Shared (.zip, 157KB)
Download from MegaUpload (.zip, 157KB)
A-Series 1.01 (complete package) - 28/09/09
Download (.zip, 157KB)
A-Series 1.00 (complete package) - 27/09/09
Download (.zip, 151KB)
Changelog
Spoiler:
1.04
- Fixed importing and viewing corrupted sprites
- Fixed palette bug in the sprite editor
- Added a batch import function to the sprite editor
1.03
- Fixed the save all changes button in the sprite editor
- Fixed a bug in the LZ77 compression algorithm which caused the last palette entry to be compressed incorrectly
- Fixed a bug in the sprite editor which caused errors with Emerald
- Added Emerald (U).ini file
1.02
- Fixed a potential bug in the sprite editor
1.01
- Included the image files which were causing ASPE to crash
- Added a repoint function to the icon editor
- Added a set write offset function to the sprite editor
- Added an auto-transparency option to the icon and sprite editors
- Added an update palette function to the sprite editor
- Stopped the original imported image in the sprite editor being recoloured
Happy hacking!
EDIT (giradialkia here): https://dl.dropbox.com/u/34957059/Advanced Series.rar
Here is a renewed link for the programs.
Last edited by a moderator: