• 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]

0m3GA ARS3NAL

Im comin' home...
1,816
Posts
16
Years
Well, that would be a good explanation, but something tells me it's incorrect...

My Reasoning?
Look at the 'append' command near the beginning of JPAN's plugin...
It's not a number as simple as 8, no, it's a larger one, much larger.

And by database, I meant the small text file that was uploaded including the commands...

I say, if you upload something like a database, make sure you include a way to USE the documentation... I swear it's almost like 99% of C++ Tutorials, they all assume you have moderate experience with the language in question.

I dub this language, Nameless Script, or simply, NS.
Objections?

If you make more tools, you should implement this, NS into it.
Broaden, Widen, Imagine.

And finally... HELP! lol
 

0m3GA ARS3NAL

Im comin' home...
1,816
Posts
16
Years
Well, this is .NET so we could use reflect and look at how a plugin is handled (?)

I was thinking more along the lines of just making a plugin, and putting debug lines everywhere and seeing what everything does...

Dunno if that will work either so...

EDIT
I found a bug.

If you try to load a plugin that isn't for your ROM, the program tells me I can't run it... but then I can't load any different plugins until I restart the program...

EDIT 2
My Gathered Info... (I'm still lost in the dark... where's the dev when I need him =( )

Code:
Memory      Value     Command        Comment
Blank             - No Commands
Mem(0)   &H0      - Append(F#)  //Why?
Blank             - Dump(0)     //Same Thing... Why?
Mem(0)   &H8      - Append(8)   //Distance between pokemon on the table...
Mem(0)   &H0      - Multiply(I#) //Sets Mem(0) up to read from the table...
Mem(0)   &H2350B4 - Add(&H2350b4) //Further Positions Mem(0)
Mem(0)	 &HD4FBD2 - Read(mem(0), 3) //From what I gather... table reading...
 Mem(1)	 &H2350B4
Mem(0)	 &HD2FBD4 - Flip(3)      //Sprite Pointer!
 Mem(1)	 &H2350B4
Mem(0)	 &H8      - Append(8)   //Why?
 Mem(1)	 &HD2FBD4
 Mem(2)	 &H2350B4
Mem(0)	 &H0      - Multiply(I#) //Why?
 Mem(1)	 &HD2FBD4
 Mem(2)	 &H2350B4
Mem(0)	 &H237314 - Add(&H237314) //Why?
 Mem(1)	 &HD2FBD4
 Mem(2)	 &H2350B4
Elaboration? From ANYONE, please, I really am determined to make a plugin...
 
Last edited:

JPAN

pokemon rom researcher
104
Posts
15
Years
  • Seen Jul 2, 2016
Append(num) makes that number appear in the memStack.
F# is the frame number, and I# is the index number.
so, Append(F#) makes the current frame number appear at the top of the Stack, that is Mem(0)

Dump(num) clears the memory position at Mem(num), so Dump 0 erases the mem(0) position and pushes the stack up (mem(1) becomes mem(0), mem(2) becomes mem(1)...)
Because it only had mem(0) occupied, it cleared the stack.

All arithmetic functions (Add, Multiply being examples) take the number that is at Mem(0) and applies that operation to it and a parameter.
So, in the example it multiplied by I#, which should probably be 0 at the time, resulting in Mem(0) = 8*0 = 0. The add makes mem(0) += 0x2350b4.

Read and Write are direct ROM operations, that do as the name implies. They read and Write the bytes as they appear to us, so they load/write byte by byte with the first being the most significant byte(Big Endian).
So, Read(mem(0), 3) reads the first 3 bytes of the location indicated by mem(0).

Because the GBA has it in reverse (least significant byte first, Litte endian), Flip takes the 3 bytes and reverses them, to look more like a pointer. Flip(3) flips the first 3 bytes.

A command that is not in your above post is the Image one.
Image takes as the first param the image offset, as second one the Palette offset and last the size of the image, in the format (0xWidth<<0x10 |0xheight). That is the reason the second pointer is loaded. It's the palette. Image(mem(1),mem(0), 00200020) would load the image in Mem(1), with 32*32 sprite size, with the palette indicated by mem(0).
 

link12552

decade club
205
Posts
16
Years
Plugin Language

Whoa!!!
Completely missed this whole discussion...
JPAN did a great job explaining the commands though XD

But if you want an almost step by step explanation of the pokemon plug-in here it is:
Spoiler:


The plug-in language is very abstract, and quite interesting...
It's really is a command based language, with a few twists...
And yes it's confusing, but... IT WORKS! XD

P.S.
Nameless Script is the name, so your spot on XD
You do know, there is a NS (nameless script) section in the Guide to NSE
The command list
 

0m3GA ARS3NAL

Im comin' home...
1,816
Posts
16
Years
Hurrah!

Now that I've seen a detailed explanation of the NS System, I'm sure Ican make a few plugins...
My first one will, undoubtedly, be quite small, but I'll work up.
Also, didn't see that tut on NSE, I like it, a lot.
You've gotten my respect, and my attention.
Good Man, good man indeed.

EDIT
I HOPE YOU SAW MY BUG REPORT IN MY LAST POST

Also, 2 ideas
Resizeable Canvas
Resizeable Cursor
 
Last edited:

Lord Varion

Guess who's back?
2,642
Posts
15
Years
  • Age 29
  • Seen Jan 6, 2015
Wow a few months ago
i disliked this because it was hard

Now i use it all the time and i would reccommend anyone to use it :)
 

link12552

decade club
205
Posts
16
Years
OVER/ENDED -Technical Preview!

Edit 12/9/2010: The Tech Preview is now over. A new version of NSE (1.7.5.0) will be released soon.

Spoiler:
 
Last edited:

Dragonflye

Author of Pokémon Sovereign of the Skies
107
Posts
14
Years
  • Age 28
  • Seen Oct 9, 2023
I found a bug you might interested in the.
It is as if one with German games, the size changes of a hero, then the Data1 and Data2 are misspelled.

The data looks like for the German games:

Emerald German:
16x16 = 51B22C 51B27C
16x32 = 51B244 51B2d0
32x32 = 51B24C 51B324
48x48 = 51B24C 51B384
64x64 = 51B254 51B404
88x32 = 51B21C 51B654
96x40 = 51B21C 51B524

Firered German:
16x32 = 3A35D4 & 3A3660
16x16 = 3A35B4 & 3A360C
32x32 = 3A35DC & 3A36B4
64x64 = 3A35E4 & 3A3794
128x64 = 3A35A4 & 3A3914

Rubin German:
16x16 = 37C9BC & 37CA2C
16x32 = 37C9D4 & 37CAA4
32x32 = 37C9DC & 37CB1C
48x48 = 37C9DC & 37CBAC
64x64 = 37C9E4 & 37CC4C
88x32 = 37C9AC & 37D08C
96x40 = 37C9AC & 37CE5C

The other games I have not explored, but it would be good if you could repair the ...

And sorry, I'am a German Hacker an my English ist not so good.:disappoin
 

Sora's Nobody

The Official Roxas
1,112
Posts
14
Years
So i see you want a challenging plug-in to make. Well what about a tile editor plug-in. The only problem i see in that thought is that it might make people take the easy way only. Oh and i can't really figure out what the Browser.npi is for it just shows some black and white stuff in nse. And i can't figure out what the whiletest one is for.
 

link12552

decade club
205
Posts
16
Years
Responses

So i see you want a challenging plug-in to make. Well what about a tile editor plug-in. The only problem i see in that thought is that it might make people take the easy way only. Oh and i can't really figure out what the Browser.npi is for it just shows some black and white stuff in nse. And i can't figure out what the whiletest one is for.
I guess you saw my hint XD
...

Browser.npi works a-lot like tilemolster (Try index: 7380 in firered to see what I mean), it's just an example plug-in

Whiletest.npi is a demonstration of the new while function in NSE. Looping from 0 to 50 and then outputting "50" (32 in hex)

Check out the code in the example programs. open them in notepad to see what's going on! :P

P.S. the tile editing plug-in is a good great idea, although I'm having some trouble finding the pointers to the different tile-sets in the ROM. <conspicuous hint for help here people...

How do I access the pokemon sprites? I saw a ho-oh in the pictures you put up.

Goto: Options>Plugins>Select Plugin (Ctrl-N) and chose "Pokemon.npi"
-or- take the offsets from the sprite in unlz
 
18
Posts
13
Years
  • Seen Jun 18, 2020
Thanks, shame there isn't an option to save ALL images at once, would help me ALOT.
 
Back
Top