The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > ROM Hacking > Tools, Tutorials & Resources
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

Tools, Tutorials & Resources Various tools to help you develop your hacks can be found here.
New threads in this forum are to be approved by a moderator before they are displayed.


Reply
 
Thread Tools
  #226    
Old September 2nd, 2010, 08:53 AM
0m3GA ARS3NAL's Avatar
0m3GA ARS3NAL
Im comin' home...
Community Supporter Tier 1
 
Join Date: Jan 2008
Location: Superjail Penitentiary
Age: 21
Gender: Male
Nature: Gentle
THAT, is the kind of reply I was looking for, something to build my own ideas off of, a reference if you will (I love references... muahaha)

Thanks JPAN.
__________________
>Boot Jailbot
>Pass *****
.
.
Jailbot OS Ver 1.1.2
Greetings Warden
of Superjail Penitentiary
Awaiting user input...

>Display User_Info
╠══User Info══╣
Username:
0m3GA ARS3NAL
Age: 18
Sex: Male ♂
Race: Caucasian
Quote:
"What is this
I don't even..."

M/O: Often acts out to get attention, but recently has changed that. Has been studying up on hacking information and hopes to participate in more advanced hacking discussion.
╠══End of File══╣
Awaiting user input...

>
Reply With Quote
  #227    
Old September 2nd, 2010, 02:28 PM
link12552's Avatar
link12552
just tired, that's all
 
Join Date: Dec 2007
Location: The not so distant future
Age: 18
Gender: Male
Nature: Calm
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:

[BPRE] // Simply the start of the Firered block
Imax(439) // Sets the max amount of images to 439
Fmax(3) // Sets the max amount of frames to 3
//Load frame to memory
Append(F#) // Append means "load into memory" F# is to get the current frame number, so we're loading the current frame into the top of the memory stack
nout(mem(0)) // Should not be in there, XD, but nout outputs a value or a string in a msg box
// Load image differently depending on frame
If(0) // The if statements compare a value to whatever is at the top of the memory stack, we loaded the frame number into memory, so were saying "if the frame is 0"
{
dump(0) // Dumps the memory at a certain position, 0 (or the top) in this case
Append(8) // This time we are loading the number 8 into memory
Multiply(I#) // Now we are going to multiply whatever is at the top of the memory stack by the current index number (I#)
Add(&h2350b4) //Now we are adding &h2350b4 to whatever is at the top of our memory stack, The notion behind this is that all of the pokemon sprite pointers are in a table starting at 0x2350B4 (&h2350b4) and have a space of 8 between each, we are pretty much doing 8 * Index number + 0x2350B4 that little equation should give us the pointer for the given index
Read(mem(0), 3) //Reads 3 bytes out of the rom from the location we just calculated, loads them onto the top of the memory stack
Flip(3) //Flip actually flips the bytes loaded at the top of the mem stack, it flips them in groups (in this case a group of three), wee do this because were read the pointer , but it's reversed so wee flip it
Append(8) // Now we are loading another 8 onto the memory stack
Multiply(I#) // Were are again multiplying it by the index
Add(&H237314) //We are adding the offset of the pokemon palette table
}
...
...
...
Read(mem(0),3) // We are going to read the palette pointer from the palette table
Flip(3) //And again were flipping it so that it's usable
Append(I#) //Loading the index number into mem
//Check if drawing deyoxes or castform, because they draw with a different size
If!(409) // If were are not looking at deyoxes
{
If!(384) // If we are not looking at castform
{
Image(mem(3), mem(1), 00400040) // Load the image [image offset = mem(3), Palette Offset = mem(1), size = 00400040 (same as 64,64)]
// The overview of the memory stack right now is
// mem(0) = the index number
// mem(1) = the palette pointer we calculated
// mem(2) = math for palette
// mem(3) = the sprite pointer we calculated
// mem(4) = math for sprite

}
}
...
...
...
[/BPRE] // End of Firered block


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
__________________
Reply With Quote
  #228    
Old September 2nd, 2010, 11:33 PM
0m3GA ARS3NAL's Avatar
0m3GA ARS3NAL
Im comin' home...
Community Supporter Tier 1
 
Join Date: Jan 2008
Location: Superjail Penitentiary
Age: 21
Gender: Male
Nature: Gentle
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
__________________
>Boot Jailbot
>Pass *****
.
.
Jailbot OS Ver 1.1.2
Greetings Warden
of Superjail Penitentiary
Awaiting user input...

>Display User_Info
╠══User Info══╣
Username:
0m3GA ARS3NAL
Age: 18
Sex: Male ♂
Race: Caucasian
Quote:
"What is this
I don't even..."

M/O: Often acts out to get attention, but recently has changed that. Has been studying up on hacking information and hopes to participate in more advanced hacking discussion.
╠══End of File══╣
Awaiting user input...

>

Last edited by 0m3GA ARS3NAL; September 3rd, 2010 at 12:54 AM.
Reply With Quote
  #229    
Old September 4th, 2010, 12:33 PM
Zark's Avatar
Zark
Beginning Trainer
 
Join Date: Mar 2008
Location: Spain
Gender:
Wow, I didn't know that there was a tool better than Overworld editor!
Reply With Quote
  #230    
Old September 15th, 2010, 03:40 AM
Nintendork15
I'm gone. Bye.
 
Join Date: Feb 2009
Location: Undertaker. Co.
Age: 19
Gender: Male
Nature: Naughty
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
__________________
gone.
Reply With Quote
  #231    
Old September 15th, 2010, 11:07 AM
r0bert's Avatar
r0bert
Quitifyingly awesome.
 
Join Date: Jul 2010
Location: kewl places
Gender: Male
Nature: Naughty
how do you get to the trainer backsprite?
__________________
Reply With Quote
  #232    
Old September 15th, 2010, 02:46 PM
0m3GA ARS3NAL's Avatar
0m3GA ARS3NAL
Im comin' home...
Community Supporter Tier 1
 
Join Date: Jan 2008
Location: Superjail Penitentiary
Age: 21
Gender: Male
Nature: Gentle
Quote:
Originally Posted by r0bert View Post
how do you get to the trainer backsprite?
If you're using FR then just look in bookmarks... otherwise you'll need to manually input the pointer to it...
__________________
>Boot Jailbot
>Pass *****
.
.
Jailbot OS Ver 1.1.2
Greetings Warden
of Superjail Penitentiary
Awaiting user input...

>Display User_Info
╠══User Info══╣
Username:
0m3GA ARS3NAL
Age: 18
Sex: Male ♂
Race: Caucasian
Quote:
"What is this
I don't even..."

M/O: Often acts out to get attention, but recently has changed that. Has been studying up on hacking information and hopes to participate in more advanced hacking discussion.
╠══End of File══╣
Awaiting user input...

>
Reply With Quote
  #233    
Old September 29th, 2010, 10:15 AM
Orinjmate's Avatar
Orinjmate
The Orinj of the Mate
 
Join Date: Jun 2010
Location: England
Gender: Male
Nature: Calm
Which offsets have the flower and water animations in Emerald?
__________________
Currently working on a new hack named Hollow.
Pokemon Sky SD Creator
Reply With Quote
  #234    
Old October 7th, 2010, 11:19 PM
Blaziquaza's Avatar
Blaziquaza
...
 
Join Date: Jun 2009
Location: Whyalla, Australia
Gender: Male
Nature: Jolly
Could I suggest a new feature to create new palettes? :D
__________________
Everything you say to me pushes one step closer to the edge



And I'm about to break
I need a little room to breathe...

Steam IGN: Hybrid Theory
Reply With Quote
  #235    
Old October 12th, 2010, 01:23 PM
Skara's Avatar
Skara
THIS. IS. SEMPITERNAL.
 
Join Date: Dec 2008
Location: Manchester, England
Age: 19
Gender: Male
Nature: Timid
Problem. I can only find the overworlds.
__________________
I'VE LEFT THIS ACCOUNT. Here is my new profile
Reply With Quote
  #236    
Old October 15th, 2010, 04:37 PM
link12552's Avatar
link12552
just tired, that's all
 
Join Date: Dec 2007
Location: The not so distant future
Age: 18
Gender: Male
Nature: Calm
Edit 12/9/2010: The Tech Preview is now over. A new version of NSE (1.7.5.0) will be released soon.

Spoiler:
Tech. Preview: in attachments
Seems like it's been a while... So here's a little gift

  • Draw Mode!
  • Better image loading!
  • Much faster (400% in some cases!)
  • Better plug-in reading support.
  • 16 color PNG imports
  • Keyboard shortcuts
Note: There may be bugs, remember this is a tech preview.

Feel free to suggest new features and plug-in commands <- hint, hint,
Just not something that could be easily turned into a plug-in...

Plug-ins:
  • More accurate plug-in reading (fixes the "if" problem")
  • Added "while" and "Jump" commands
  • Support for header categories

PNG Imports:
  • "Import bitmap" becomes "Import Image"
  • Imports any 16 color or less BMP or PNG

Better Image Loading:
  • Better memory usage
  • Loads images up to 4X bigger (Width x Height <= 65536)think 256x256 instead of 128x128

Draw mode:
  • A paint bucket! (Note: Color sensitive, huge images can take a second
  • A re-sizable brush!
  • Undo and redo compatible


Whats included:
  • The tech preview of NSE
  • Several new/example Plug-ins
  • A bookmark file.
Remember: This is a technical preview, what you see is subject to change...
-link12552
__________________

Last edited by link12552; December 9th, 2010 at 02:14 PM. Reason: Tech Preview Over
Reply With Quote
  #237    
Old October 16th, 2010, 01:38 AM
Dragonflye's Avatar
Dragonflye
 
Join Date: Dec 2009
Gender: Male
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.
Reply With Quote
  #238    
Old October 16th, 2010, 02:51 PM
Sora's Nobody's Avatar
Sora's Nobody
The Official Roxas
 
Join Date: Jun 2009
Location: Destiny Island
Gender: Male
Nature: Brave
Send a message via Windows Live Messenger to Sora's Nobody
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.
__________________

Sora's Nobody ★ Nothing Yet!
♠The Official Roxas♠ My Stuff:


Reply With Quote
  #239    
Old October 23rd, 2010, 08:54 AM
ElBurrito's Avatar
ElBurrito
Trainer of Shadows
 
Join Date: Jan 2010
Gender: Male
How do I access the pokemon sprites? I saw a ho-oh in the pictures you put up.
Reply With Quote
  #240    
Old October 23rd, 2010, 03:39 PM
link12552's Avatar
link12552
just tired, that's all
 
Join Date: Dec 2007
Location: The not so distant future
Age: 18
Gender: Male
Nature: Calm
Quote:
Originally Posted by Sora's Nobody View Post
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.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...

Quote:
Originally Posted by ElBurrito View Post
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
__________________
Reply With Quote
  #241    
Old October 25th, 2010, 03:04 PM
Zee Best
Beginning Trainer
 
Join Date: Oct 2010
Gender: Male
Thanks, shame there isn't an option to save ALL images at once, would help me ALOT.
Reply With Quote
  #242    
Old October 29th, 2010, 02:55 AM
Nintendork15
I'm gone. Bye.
 
Join Date: Feb 2009
Location: Undertaker. Co.
Age: 19
Gender: Male
Nature: Naughty
wow
oes it do all that in this release coz if so
i been using it for for overworlds only
(im such a fool .....)
__________________
gone.
Reply With Quote
  #243    
Old October 30th, 2010, 02:22 AM
samm's Avatar
samm
Beginning Trainer
 
Join Date: May 2008
You could add more support to the bookmarks and plugins for pokemon emerald appreciate it
__________________

Reply With Quote
  #244    
Old November 6th, 2010, 12:43 AM
smilewolfy
pokemon photographer
 
Join Date: Oct 2010
Location: Parramatta, Australia
Age: 19
Gender: Male
Nature: Rash
Send a message via Windows Live Messenger to smilewolfy
I need help, first off to make the explanation easier, i'm just going to tell you i'm putting iris in from black and white games, now, i changed the size of an OW sprite to 32x32 so iris sprite could fit in, then i put her Front sprite[frame 0] in and it works perfectly, but then when i put her back sprite in, [frame 1], it stuffs up frame 0 cutting the sprite up and putting bits of it everywhere, then when i try to put frame 0 back in, it messes up frame 1, anyone know how i can fix this?

Edit: and when i play the game, only top half of the sprite appears, can anyone help please

Last edited by smilewolfy; November 6th, 2010 at 01:36 AM.
Reply With Quote
  #245    
Old November 29th, 2010, 03:04 PM
Nightymare
Beginning Trainer
 
Join Date: Nov 2010
Gender: Male
can someone give me a nsl file of Gary as main char?....

i try to fix it on my own in paint but i fail at art... T-T

i just wanna play play pokemon game as gary for God's sake T-T
Reply With Quote
  #246    
Old December 12th, 2010, 02:59 PM
link12552's Avatar
link12552
just tired, that's all
 
Join Date: Dec 2007
Location: The not so distant future
Age: 18
Gender: Male
Nature: Calm
Update 1.7.5.0

Seems like it's about time for an update!
(Most of the features from the technical preview have stuck around, but there have been things added and changed)

New Features:
  • Draw Mode
  • New Plugin Commands
  • 16-Color PNG Imports
  • Save Image to
  • Save Palette to
  • NSL saving and importing of any image


Plug-ins:
  • More accurate plug-in reading (fixes the "if" problem")
  • Added "while" and "Jump" commands
  • Support for header categories
  • New Functions (Fin, Fout)
  • Direct Access to memory ( &mem(x), #mem(x) )

Image Imports:
  • "Import bitmap" becomes "Import Image"
  • Imports any 16 color or less BMP or PNG
  • Fixed a bug for importing into a compressed sprite
  • Will attempt to import an image with more than 16 colors (Must be indexed)

Better Image Loading:
  • Better memory usage
  • Loads images up to 4X bigger (Width x Height <= 65536)think 256x256 instead of 128x128
  • Some accuracy tweaks in Lz77

Better Image Saving:
  • NSL file type small update (NSL 3.1)
  • Import NSL files on any sprite
  • Accuracy tweaks in compression algorithm
  • Save To (Save an Image or palette to any offset, with compression options)



Draw mode:
  • A paint bucket! (Note: Color sensitive, huge images can take a second
  • A re-sizable brush!
  • Undo and redo compatible


Included in this version:
  • NSE 1.7.5.0
  • NSL Editor 1.1.0.0
  • Plugins (Trainer, Pokemon, Item...)
  • The standard bookmark file
  • The read-me

-link12552
P.S. I'll update the list of Plugin Commands Soon, but heres a hint:
fin = File Input, Fout = File Output, #mem(x) returns the value at memory position x...
__________________
Reply With Quote
  #247    
Old December 12th, 2010, 08:33 PM
Shiny Quagsire's Avatar
Shiny Quagsire
Being a Wizard
 
Join Date: May 2009
Location: Hoenn Safari Zone
Age: 16
Gender: Male
Nature: Jolly
Awesome! I've wanted lz77 compressed pallets for some time.

But, a nice feature to have would be 256 color pallets. It could help in inserting the intro sprites and ruby worldmaps. I know it'd take a while, but it's better to have it than to not.
__________________



Reply With Quote
  #248    
Old December 15th, 2010, 01:35 PM
itari's Avatar
itari
Community Supporter
 
Join Date: Mar 2010
Location: 渦潮隠れの里
Age: 17
Gender: Female
Nature: Relaxed
Wow, this is an amazing update. I would say that the palette saving and fill bucket are the best two. I mean, it can very tedious doing the backgrounds of sprites.
__________________
Reply With Quote
  #249    
Old December 21st, 2010, 05:29 PM
link12552's Avatar
link12552
just tired, that's all
 
Join Date: Dec 2007
Location: The not so distant future
Age: 18
Gender: Male
Nature: Calm
Plugin Commands 1.7.5
I said they'd be here and now here they are!
New and improved commands to make the job easier
Here are the plug-in commands as of NSE 1.7.5.0
* = new or revised...

Spoiler:
i# Returns the current index
f# Returns the current frame
s# Returns the image offset
p# Returns the palette offset
st# Returns sprite table offset
pt# Returns palette table offset

&mem and #mem will replace with their respective values when called,
So they can be used in almost any command!


* &mem Returns the EXACT data in the memory stack
&mem( memory index)

* #mem Returns the VALUE of the data in the memory stack
&mem( memory index)


Read: Reads data from the loaded ROM into memory
read( startoffset, length)

Write: Writes data to the loaded ROM
write( writedata, startoffset)

Image: Loads either an image form the ROM (both compressed and un-compressed
image( image offset, palette offset, size)
Size = 4bytes (WWwwHHhh)

Condition - palette offset = "grayscale" : loads an image in grayscale
Freespace: Finds the offset of a given amout of freespace and loads it into memory
freespace( size, startoffset)

Add: Increases mem(0) by a value
add( value)

Subtract: Decreases mem(0) by a value
subtract( value)

Multiply: Multiplies mem(0) by a value
multiply( value)

Divide: Divides mem(0) by a value
divide( value)

Append: Loads a value into memory
append( value)

Flip: Flips mem(0) in section length
flip( value)
Condtion - flip(0) : flips mem(0) entirely
Condtion - flip(1) : flips mem(0) byte by byte

Dump: Removes memory at a given depth
dump( value)

Debug: Displays a dialog with the current memory status among other things
debug

Stop: Ends plugin execution
stop

Fmax: Sets the frame bounds to a value
fmax( value)

Imax: Sets the index bounds to a value
imax( value)

If Statements: Compare mem(0) to a value. If code contained in { }
If(value)
If!(value)
If>(value)
If<(value)

Nin: Propmts for input
nin( prompt message, response form)
Condition: Response form = "d" responds in standard form
Condition: Response form = "h" responds in hex form

* Nout: Shows ouput in a message-box
nout( value)
nout( "String")

* DrawPoint: Draws a point on the canvas
drawpoint( x-coordinate, y-coordinate, palette index)

* Jump: Jumps executed line back or forth
jump( jump distance {can be positive or negative} )

* While Statements: Compare mem(0) to a value. While code contained in { }
While(value)
While!(value)
While>(value)
While<(value)

* Fin: Loads a file into memory
fin(file location relative to plugin location in quotes, file extension in quotes) ex: fin("in",".test")
Condition: file location = "dialog" shows an open file dialog with the given extension

* Fout: Outputs memory [0] to a file
fout(file location relative to plugin location in quotes, file extension in quotes) ex: fout("out",".test")
Condition: file location = "dialog" shows a save file dialog with the given extension
__________________
Reply With Quote
  #250    
Old December 21st, 2010, 11:01 PM
ScripterGold's Avatar
ScripterGold
A rookie Scripter
 
Join Date: Dec 2010
Location: In the アドベンチャー region
Gender: Male
Nature: Modest
Ohhhhh ya! Miss this and you are done! The awesome script editor rocks, link12552!
__________________
A proud completeter of the Jhoto, Hoenn and Sinnoh regions and a person on his way to creating a Hacked ROM.
Reply With Quote
Reply
Quick Reply

Sponsored Links
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 10:35 PM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 2002 - 2014 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.