• 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?".
  • 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.

Tool: Nameless Sprite Editor [Classic]

link12552

decade club
205
Posts
16
Years
Here's a small plugin I wrote to edit Pokemon Icon data.
There are 2 frames, per picture, to a total of 6 frames (0-1 is palette 0, 2-3 is palette 1, 4-5 is palette 3). You can edit your pokemon, shifting between the palettes freely as long as you save your picture in between.
The palette byte, however, remains the old one, so if you choose to use a different palette for the icon you're editing, you need to switch it manually.

This code is given here under the BPRE tag, but it will work on any ROM version that came out after Fire Red (J). That is due to a small structure of data placed at 0x128 at the ROM data, where:
0x138 is the Icon table pointer;
0x13c is the Icon Palette byte data and
0x140 is the Icon palette address table.

PS: The file is in txt format, as I can't upload it as npi. Change the filename and the tag, and you're set.

Great contribution :D
and good job using the plug-in commands, they can be a little confusing after awhile XD

I love this! It's perfectly made. There's absolutely nothing to improve.

EDIT:
Wait, I found something. Can you make it so if the import window is open, you can still access the main window? That way you can edit a LOT faster.

And even better, if you could add the shortcut Ctrl+Shift+I for Import Bitmap; there's no shortcut for convenience.

EDIT 2: Never mind, I realized that this was hacked and remade into Overworld Sprite Editor Rebirth Edition by HackMew.

Whoa, way off there...
-and I hope you're not basing superiority on whether NSE has a shortcut or not... because that would be silly... ;)

Technically, they ARE separate and similar (being created on two entirely different engines), but NSE borrowed a lot of things from Rebirth Edition.

So, technically, NSE is an update to RE, if you want to think of it like that.

I guess they are somewhat similar, because I did borrow the general layout scheme of the main window from RE, and they both can edit OW's, but NSE can do so much more, just read the features list...
-and the things borrowed from RE are

  • Some window layouts schemes...
  • How a 16 color bitmap is formatted
  • and some offsets from it's settings.ini (cause hey I don't own the Japanese version of saphire XD)
-but everything else is original

Oh! and everyone, enough with the argument, what tool someone uses is a preference of choice...
and eventually they'll come crawling back... XD
 

Shiny Quagsire

I'm Still Alive, Elsewhere
697
Posts
14
Years
Wow, you've certainly improved a lot lately :)
What would b nice is some shortcut keys, like Ctrl + B to get to bookmarks, ctrl + i to import, that stuff.
 

Micael Alighieri

Helix Boo / Lord Kaktus, ex-member from Whack a Ha
97
Posts
16
Years
  • Seen May 24, 2017
Technically, they ARE separate and similar (being created on two entirely different engines), but NSE borrowed a lot of things from Rebirth Edition.

So, technically, NSE is an update to RE, if you want to think of it like that.

You should remember that NSE edits general graphics, not only overworlds and RE only edits the overworlds. So, technically, NSE is not and update to RE. Because of that, NSE can be an update to TilED2002 and UNLZ GBA.

Bye~
 

Sierraffinity

Desperately trying to retire from ROM hacking
1,069
Posts
16
Years
You should remember that NSE edits general graphics, not only overworlds and RE only edits the overworlds. So, technically, NSE is not and update to RE. Because of that, NSE can be an update to TilED2002 and UNLZ GBA.

Bye~
Well, it COULD be considered an update to any of those, you're right, but it can also be considered an update to Rebirth Edition, but only if you want to think of them as branching off the same idea.

Otherwise, NSE is only an update to itself (and GBA graphics editing).
 
76
Posts
15
Years
  • Age 31
  • Seen Aug 8, 2021
Since this program has the exact same problem as Advance Pokemon Sprite Editor:
*SIGH*
O.
M.
F.
G.
Is there NOWHERE IN THE ENTIRE INTERNET that has the Leaf Green ini? Not Fire Red, not Ruby, not Emerald. LEAF GREEN. I have been looking ALL FREAKING DAY. Sorry if I sound pissed, it's because I am.
 
76
Posts
15
Years
  • Age 31
  • Seen Aug 8, 2021
that's because nobody hacks leafgreen, so it has less support from tools. Either learn hex or hack a different rom.
It's not that I'M hacking it in particular, it's just that someone put in sprites for Leaf Green that I want, and no tool I download will let me get them OUT of the rom.
And trust me, I've tried to learn hex. Many times. Every single time, I screw it up royally.
 
Last edited:

Full Metal

C(++) Developer.
810
Posts
16
Years
Then that's kinda your fault, not the tool makers. If you want an INI for leafgreen then go out and make one yourself. -.-
advanced pokemon sprite editor has a batch exporter if i remember right...no, it has a batch importer, but EITHER WAY. You really don't have a right to be mad at anyone, but now you have a motive :D
 
76
Posts
15
Years
  • Age 31
  • Seen Aug 8, 2021
Then that's kinda your fault, not the tool makers. If you want an INI for leafgreen then go out and make one yourself. -.-
advanced pokemon sprite editor has a batch exporter if i remember right...no, it has a batch importer, but EITHER WAY. You really don't have a right to be mad at anyone, but now you have a motive :D
I'd love to. In fact, that's the first thing I'd have done, if I knew how to in the first place. But therein lies the problem: I haven't got the SLIGHTEST idea how. Hell, I honestly don't even know what the .ini actually IS, let alone how to extract it!
 

Sierraffinity

Desperately trying to retire from ROM hacking
1,069
Posts
16
Years
I'd love to. In fact, that's the first thing I'd have done, if I knew how to in the first place. But therein lies the problem: I haven't got the SLIGHTEST idea how. Hell, I honestly don't even know what the .ini actually IS, let alone how to extract it!
Dude, how about just using Un-LZ GBA? It reads all of the LZ77 compressed sprites from the ROM (which do include the Pokémon sprites).
 

link12552

decade club
205
Posts
16
Years
Leafgreen Support

Since this program has the exact same problem as Advance Pokemon Sprite Editor:

Problem? there's no real problem...
Your issue is that NSE's default pokemon.npi plug-in didn't have Leafgreen support added on release. (I don't own Leafgreen either..., but my friend does :P)

So here is a pokemon.npi plug-in with Leafgreen (english) support XD
Just save it in the plugins folder in the same directory as NSE
 
Last edited:
76
Posts
15
Years
  • Age 31
  • Seen Aug 8, 2021
Dude, how about just using Un-LZ GBA? It reads all of the LZ77 compressed sprites from the ROM (which do include the Pokémon sprites).
SOLD!
EDIT: Yes, this is the first time I've heard of that tool, or rather the first time I've heard what it actually does.
EDIT2: ASDFDSASDF. THIS TAKES FOREVER. XD My hand hurts. I guess that's to be expected with something like 1600 sprites to export... XD
 
Last edited:

Sierraffinity

Desperately trying to retire from ROM hacking
1,069
Posts
16
Years
SOLD!
EDIT: Yes, this is the first time I've heard of that tool, or rather the first time I've heard what it actually does.
EDIT2: ASDFDSASDF. THIS TAKES FOREVER. XD My hand hurts. I guess that's to be expected with something like 1600 sprites to export... XD
Well, yeah, that's obvious. XD
Glad I could help, anyways.
 

Sierraffinity

Desperately trying to retire from ROM hacking
1,069
Posts
16
Years
Well, I just wanted to say something...
The bytes that say "Palette Registers" also have something to do with the animation...
For instance, my Poké Ball sprites were messed up ever since I copied them over from FR. Then, I changed the so-called "Palette Registers" back to what it was before, and the animation error disappeared! Then, to fix the palette change that was caused by reverting the palette registers, I changed the palette slot "half-byte" back to what it was before, and poof! the Poké Ball works.

This is apparently what happened with the sprite with the bug I was talking to you before - the sprite I was replacing had its "palette registers" set differently (as I overwrote one of the special sprites, one that always faces down and isn't supposed to move).
 

link12552

decade club
205
Posts
16
Years
Found a glitch!

Whilst opening the "pokemon.npi" plugin, I got an output message that simply said "0". Every time I would move on to another sprite, such as from Bulbasaur to Ivysaur, or from Bulbasaur to Unown "?", or any other combination, I would receive the same output message-- "0".
fix?
Really, It's just to make it less annoying when you're trying to navigate through the pure awesomeness that is embodied in the form of link12552's NSE.

Whoops... XD
It looks like a line of extra code made it into the Pokemon plug-in :P

You can easily fix it, so no worries...
Just open up the Pokemon plug-in in something like notepad, and delete the line that starts with "nout" (should be near the top)...
I wonder how I hadn't noticed...

Oh well, you can easily fix it, and I'll remove that part in the next release...
 

0m3GA ARS3NAL

Im comin' home...
1,816
Posts
16
Years
Whoops... XD
It looks like a line of extra code made it into the Pokemon plug-in :P

You can easily fix it, so no worries...
Just open up the Pokemon plug-in in something like notepad, and delete the line that starts with "nout" (should be near the top)...
I wonder how I hadn't noticed...

Oh well, you can easily fix it, and I'll remove that part in the next release...

Lol, luckily I fixed that before i read the whole thread here.
I'm learning you're... interesting plugin language...

I've got to hand it to you... interesting indeed.
Best Graphic Editor I've seen so far, it does pretty much everything graphical, aside from tilemaps, the town map, and other larger sprites...

Hope to see more interesting developments, in the mean time, I might just make a plugin or 2....

EDIT
I am utterly confused...

Please explain step by step how the Pokemon Plugin works...
I've tried calculating it in my computers calculator but come up all wrong...
(assuming one can use unLZgba to find offsets...)

Step by step, command by command please?
And not just general terms, I get those, I need info like, why do you use flip(3), when it isn't listed in the database, how am I supposed to know what it means so I can use it myself?
(I'm not the greatest at reverse engineering)

Also, the;
append(value) command...
I don't know how it works either, I mean, yeah, you say it's loading the value into the memory, but WHY? What does that do, how does that affect anything in the plugin?

This is the most confusing though...
I'll comment it off...

dump(0) //What are you dumping from what?
Append(8) //What are you turning into 8? (If I'm right)
Multiply(I#) //What are you multiplying by the index number?
Add(&h2350b4) //What are you adding that number to...
Read(mem(0), 3) //How did you manage to get the desired offset? And why load 3?
Flip(3) //Okay, Flip(3) isn't ever explained...
Append(8) //Another append... dunno what the use is...
Multiply(I#) //again?
Add(&H237314) //what is this supposed add, and to what?

Please help, I'm not usually the one this lost, but you've made this such an odd language...
 
Last edited:

Full Metal

C(++) Developer.
810
Posts
16
Years
dump(0) //Not sure
Append(8) //[pokemon sprite- 4 bytes][palette - 4 bytes]
Multiply(I#) //[multiply this by the index number]
Add(&h2350b4) //add this to the current memory thingy
Read(mem(0), 3) /*How did you manage to get the desired offset? -explained above
And why load 3? - only the first 3 bytes are actually the FILE offset pointer. (removing the '08' byte )
Flip(3) //Okay, Flip(3) isn't ever explained...turning 0C0B0A into 0A0B0C
Append(8) //Another append... dunno what the use is... - turning it into a GBA pointer (?)
that's just my best guess though, i've not actually looked at the file, nor do i know what it's supposed to do. i'll read the rest of your post after i post this XD
i lied, and read it before i posted ;D
what database?! O_o
I would like to make a plugin too! :D
One that would (sort of) do tilemaps in an off way...XD (it will take some time to work out the logic on how to do that though :P )


I'd love to. In fact, that's the first thing I'd have done, if I knew how to in the first place. But therein lies the problem: I haven't got the SLIGHTEST idea how. Hell, I honestly don't even know what the .ini actually IS, let alone how to extract it!

It's pretty simple really.
Open a FR ROM with a hex editor, and have the FR.ini open in a parallel window.
Identify an offset that looks important in the .ini window, go there in the hex editor, and take note of what you see. Usually ini's will point to a table for this sort of application, and tables usually have pointers. The pokemon sprite table has [sprite ptr][palette ptr] if I remember correctly.
Taking a pointer, and finding an offset:
you see:
0x98765408
Split it up into bytes:
0x98 0x76 0x54 0x08
now reverse it:
0x08 0x54 0x76 0x98
Open up that offset (compressed) in NSE. and use the grayscale option. if what you see doesn't look like a b/w pokemon sprite, then i would suggest trying the other offset you got from the pointer. Now in APE or Full Metal Palette Editor (matter of preference) open the offset that isn't the pokemon sprite. Notice how those colors are used by that pokemon?
Now that you've seen how the INI tells NSE where things are at in the ROM, you can do the same for LeafGreen.
Table->[pointer][pointer]->Sprite/Palette.
Now here's the slightly easier part.
Open your (lgromname).gba.pal and (lgromname).gba.spr files in a hex editor.
In UNLZ.GBA find the first pokemon sprite, and take that number into memory.
Multiply that number by 4[bytes](the size of a pointer ;) )
and then enter that into your hex editor's goto box (make sure you're using either decimal or hexadecimal based on which number system you used!)
You now have a pointer to the first sprite/palette (do for each file) of each pokemon. Pretty easy eh?
Now if you're using HexWorkshop, open up you're leafgreen ROM file (the same one you opened the unlzgba files with) and search for those pointers you found. The result should be your table offset.

[/minitut]
DO NOT QUOTE ME ON THIS, BECAUSE I TYPED IT IN 5 MINUTES WITH Opera, Explorer, and AdvanceMap Open at the time XD
 
Last edited:
Back
Top