The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > ROM Hacking > ROM Hacking Hub
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

ROM Hacking Hub General discussions about ROM Hacking and Emulation. Not sure where to start? This is the place for you.
Posting links to ROMs is illegal and is not tolerated anywhere on the forum.
New threads in this forum are to be approved by a moderator before they are displayed.

Closed Thread
Click here to go to the first staff post in this thread.  
Thread Tools
  #1    
Old January 6th, 2012 (10:29 PM).
Darthatron's Avatar
Darthatron
巨大なトロール。
Community Supporter
 
Join Date: Jan 2006
Location: Melbourne, Australia
Age: 23
Gender: Male
Nature: Modest
Basically, I'm coding a new script editor for the 3rd Gen, and I want to get some ideas on what people will be expecting syntax wise. I've got two ideas...

PokéScript style:
Spoiler:
#org @Main
Lock
FacePlayer
ApplyMovement
MOVE_PLAYER {(0x10 0x10 0xFF)} //This is an in-line movement.
WaitMovement #0
MsgBox {"This is an in-line string!"} #6
ApplyMovement MOVE_PLAYER @Movement
WaitMovement #0
MsgBox @String #6
Release
End


#text @String
= This is a pointed string.

#raw @Movement //This is a pointed movement.
0x11 0x11 0xFF

C-style:
Spoiler:
#org @Main
Lock; FacePlayer;
ApplyMovement(MOVE_PLAYER, {(0x10 0x10 0xFF)}); //This is an in-line movement.
WaitMovement();
MsgBox({"This is an in-line string!"}, #6);
ApplyMovement(MOVE_PLAYER, @Movement);
WaitMovement();
MsgBox(@String, #6);
Release; End;

#text @String
= This is a pointed string.

#raw @Movement //This is a pointed movement.
0x11 0x11 0xFF


You may also have also noticed the "in-line" strings and movements. These will basically allow you to have small movements/text in the same line, which would stop the need to scroll a lot. I think this would make life a little easier in long scripts. Plus, I think it looks nicer as well.

Also, are the colors pretty?

Opinions? Ideas for the editor? Or to better improve the syntax? Thanks.

Regards, Darthatron.
__________________
あなた は しきしゃ です
わたし は ばか です
  #2    
Old January 6th, 2012 (11:00 PM).
Winter Wonderland's Avatar
Winter Wonderland
Puts the fun in dysfunctional
 
Join Date: Jun 2011
Location: Florida
Gender:
Nature: Quirky
I think a cool feature would be a list you could pull up of all flags used/flags available. Like, you could label what the flag is, in case you need to pull it up again or you try to use it and be like "Oh, this flag was used for enabling the 3rd gym. Alright."
Also, I think, after you make a correct script, you could get and interface or something that tells you exactly what your script will do. "Player moves three steps up; player moves one step to the right; player says "Blahblahblah."
Maybe(I'm not sure about this one, it'd make things lazy) make a "skeleton script" system. In drum lines, a skeleton of a warm-up is just generally how that type of warm up should go.(Triplet diddle warm-up skeleton being a bunch of random triplets and diddles to show you how one would sound) Like, you could go just click insert textbox, insert movement, insert textbox, end then you would go in and fill out all the bytes and text information.
__________________


Some say the world will end in fire,
Some say in ice.
From what I've tasted of desire
I hold with those who favor fire.
But if it had to perish twice,
I think I know enough of hate
To say that for destruction ice
Is also great
And would suffice.
Robert Frost, Fire and Ice.

Play Me Casually | Project Leola

  #3    
Old January 6th, 2012 (11:16 PM).
M.L's Avatar
M.L
Busy atm
 
Join Date: Oct 2010
Gender: Male
Pokescript has always been easier for me to look at xD and i agree with winter up their that would be helpfull.
__________________
Fluffy
  #4    
Old January 6th, 2012 (11:17 PM).
chrunch's Avatar
chrunch
 
 
Join Date: Oct 2009
Gender: Male
Send a message via Windows Live Messenger to chrunch
You could always just have an option to script either Pokescript-style or C-style. :D

And I'm looking forward to your script editor! But are you going to have any features that would really make me want to use this over XSE? Good luck anyways! :)
__________________
  #5    
Old January 7th, 2012 (12:50 AM).
Darthatron's Avatar
Darthatron
巨大なトロール。
Community Supporter
 
Join Date: Jan 2006
Location: Melbourne, Australia
Age: 23
Gender: Male
Nature: Modest
Quote:
Originally Posted by Winter Wonderland View Post
I think a cool feature would be a list you could pull up of all flags used/flags available. Like, you could label what the flag is, in case you need to pull it up again or you try to use it and be like "Oh, this flag was used for enabling the 3rd gym. Alright."
I will be including a "Constant Value Editor" which will allow you to assign certain values you use a name. This will also include the default flags/variables aswell. Such as the badges, etc. But it would be almost impossible to have a warning fire when re-using values. It's good for people to keep notes of what flags/variables they have been using, any way.
Quote:
Originally Posted by Winter Wonderland View Post
Also, I think, after you make a correct script, you could get and interface or something that tells you exactly what your script will do. "Player moves three steps up; player moves one step to the right; player says "Blahblahblah."
Seems kind of silly to me. If you write a script, you should know what it's going to do.
Quote:
Originally Posted by Winter Wonderland View Post
Maybe(I'm not sure about this one, it'd make things lazy) make a "skeleton script" system. In drum lines, a skeleton of a warm-up is just generally how that type of warm up should go.(Triplet diddle warm-up skeleton being a bunch of random triplets and diddles to show you how one would sound) Like, you could go just click insert textbox, insert movement, insert textbox, end then you would go in and fill out all the bytes and text information.
No. People need to learn to script.

Quote:
Originally Posted by M.L View Post
Pokescript has always been easier for me to look at xD and i agree with winter up their that would be helpfull.
Thanks for your input.

Quote:
Originally Posted by chrunch View Post
You could always just have an option to script either Pokescript-style or C-style. :D
True. I'm thinking I'll do something like that. I know I prefer C-Style, since I've been programming for years, but I can see why others wouldn't.
Quote:
Originally Posted by chrunch View Post
And I'm looking forward to your script editor! But are you going to have any features that would really make me want to use this over XSE? Good luck anyways!
Syntax highlighting, for one. But that's what this thread is for. You need to suggest things.
__________________
あなた は しきしゃ です
わたし は ばか です
  #6    
Old January 7th, 2012 (05:48 AM).
Speedster's Avatar
Speedster
The Unknown
 
Join Date: Dec 2011
Location: In the depths of space...
Gender: Male
Nature: Jolly
This looks nice and efficient to use. Everything basic that you need is in there. I like the different colors of the text. I never really use PokeScript but maybe have something the generator from it in which it can write simple scripts like Walk, talk, give pokemon, ect. in an easier way. That's just an option if you are willing to do it. Can't wait to see!
__________________

.:Aegis:.
~coming soon~
  #7    
Old January 7th, 2012 (05:58 AM).
itari's Avatar
itari
普通の魔法使い
Community Supporter
 
Join Date: Mar 2010
Location: 魔法の森
Age: 17
Gender: Male
Nature: Relaxed
I prefer the C style syntax. It would be better, since I'm more used to that.
Also, there needs to be like a data base of flags and variables, and what they are used for.
__________________
Pokémon Something Version

SubscriptAdvanced SongType Effectiveness EditorTilemap CreatorPython IPS Patcher
  #8    
Old January 7th, 2012 (09:28 AM).
Starchomp's Avatar
Starchomp
Avid Gambler
 
Join Date: Apr 2010
Age: 18
Gender: Male
Nature: Calm
The pokescript style looks more familiar to me. But I plan on learning C at some Point so It would be a nice way to get used to the layout of it. Personally, I'm fine with either one.

Nice colors by the way!\(^o^)/
__________________
Flabébé is so awesome
  #9    
Old January 8th, 2012 (07:35 AM).
tinix's Avatar
tinix
PearlShipper & C Programmer
 
Join Date: Feb 2010
Location: Bratislava, Slovakia
Age: 17
Gender: Male
I would like to see C-style syntax. Another thing I would like to see would be ASM disassembler. Also in what you are programming it?
__________________
Pokémon games i own:
Pokémon Diamond
Pokémon Platinum
Pokémon Ranger: Shadows of Almia
Pokémon HeartGold Version

75% of Pokemon gamers use cheats and specially made codes to make their pokemon battle-worthy. If you are one of the 25% percent that level their Pokemon up legally, put this in your signature.
-Started by SkittyLover77


  #10    
Old January 8th, 2012 (08:08 AM).
papayaperson's Avatar
papayaperson
Intermediate Hackker
 
Join Date: Dec 2011
Location: United States
Age: 16
Gender: Male
Nature: Relaxed
For a new script editor I would like it to do just that; edit scripts. If you can figure it out, maybe you could make it so that you can open a script already in the game and see how that one is made if you are going to make a similar one, just to have a basis to work off of. Also, I like that idea of putting text and movements in the same line, but that doesn't bother me about the script editors. What I would really like is if instead of #raw 0x12 or something like that, it could be stepleft 2 or something like that.
__________________
  #11    
Old January 8th, 2012 (11:51 AM).
NintendoBoyDX
Togepi
 
Join Date: Jul 2010
Gender: Male
Battle script editor. do eet
  #12    
Old January 8th, 2012 (03:04 PM).
sonic1's Avatar
sonic1
ASM is my life now...
 
Join Date: May 2008
Location: Portugal
Age: 20
Gender: Male
Nature: Timid
Well, for ASM hackers like you, me, knizz, Jambo51 and others, who already know how to expand and change the script commands, how about letting we expand the database and change/add parameters in existing/new commands? That would be awesome!
And you could let us change the name of the commands to suit what each hacker like!

~Sonic1
__________________
This signature has been disabled.
over 350px high
Please review and fix the issues by reading the signature rules.

You must edit it to meet the limits set by the rules before you may remove the [sig-reason] code from your signature. Removing this tag will re-enable it.

Do not remove the tag until you fix the issues in your signature. You may be infracted for removing this tag if you do not fix the specified issues. Do not use this tag for decoration purposes.
  #13    
Old January 8th, 2012 (04:25 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
I'm all for the C style scripting! and yes the colors are very pretty xD

After re-reading this myself, I ask you to excuse my rambling, I'm just very excited is all, lol...

You should be able to define functions! similar to Macros in c++, except with multiple lines.

Variables could then be loaded from RAM (with pointers), or sent as part of the script, so you could name them!

ex:
#define exampleGivePokemonFunction(var index, var lvl, var *ramStoredItemID)
givePokemonCommand(index, lvl, *ramStoredItemID);
namePokemonCommand();
msgbox("You've just received a pokemon from a function!", #5);

I'd also like to see the use of brackets to define a script or function
ex:
Main()
{
Lock; FacePlayer;
// Do stuff...
Release;
}

you could also store the text strings as such:
string Words = "This is a test";

so you could just type:
MsgBox(Words, #6);

and if you could define the movements and such, so you don't have to remember the raw codes.
M_UP3, M_LEFT1, or something similar, possibly easier to remember.


I love how we're seeing so many new tools all of a sudden. Brings me back to the good old days.
__________________
  #14    
Old January 8th, 2012 (05:41 PM).
Darthatron's Avatar
Darthatron
巨大なトロール。
Community Supporter
 
Join Date: Jan 2006
Location: Melbourne, Australia
Age: 23
Gender: Male
Nature: Modest
Quote:
Originally Posted by Starchomp View Post
The pokescript style looks more familiar to me. But I plan on learning C at some Point so It would be a nice way to get used to the layout of it. Personally, I'm fine with either one.

Nice colors by the way!\(^o^)/
Thanks!
Quote:
Originally Posted by tinix View Post
I would like to see C-style syntax. Another thing I would like to see would be ASM disassembler. Also in what you are programming it?
Yeah, I'm hoping to include a disassembler. It's coded in C#.
Quote:
Originally Posted by papayaperson View Post
For a new script editor I would like it to do just that; edit scripts. If you can figure it out, maybe you could make it so that you can open a script already in the game and see how that one is made if you are going to make a similar one, just to have a basis to work off of. Also, I like that idea of putting text and movements in the same line, but that doesn't bother me about the script editors. What I would really like is if instead of #raw 0x12 or something like that, it could be stepleft 2 or something like that.
Of course it will be able to edit current scripts in the game.
Quote:
Originally Posted by NintendoBoyDX View Post
Battle script editor. do eet
Kk.
Quote:
Originally Posted by sonic1 View Post
Well, for ASM hackers like you, me, knizz, Jambo51 and others, who already know how to expand and change the script commands, how about letting we expand the database and change/add parameters in existing/new commands? That would be awesome!
And you could let us change the name of the commands to suit what each hacker like!

~Sonic1
Yeah, there will be a tool included to edit the database, and make copies of it for other ROMs and stuff.
Quote:
Originally Posted by link12552 View Post
I'm all for the C style scripting! and yes the colors are very pretty xD

After re-reading this myself, I ask you to excuse my rambling, I'm just very excited is all, lol...
That's okay.
Quote:
Originally Posted by link12552 View Post
You should be able to define functions! similar to Macros in c++, except with multiple lines.

Variables could then be loaded from RAM (with pointers), or sent as part of the script, so you could name them!

ex:
#define exampleGivePokemonFunction(var index, var lvl, var *ramStoredItemID)
givePokemonCommand(index, lvl, *ramStoredItemID);
namePokemonCommand();
msgbox("You've just received a pokemon from a function!", #5);
Something like this would be very difficult to implement. Perhaps for a future version, but not the initial release.
Quote:
Originally Posted by link12552 View Post
I'd also like to see the use of brackets to define a script or function
ex:
Main()
{
Lock; FacePlayer;
// Do stuff...
Release;
}
Effectively removing the need for the "End" command? Something like that could be done pretty easily.
Quote:
Originally Posted by link12552 View Post
you could also store the text strings as such:
string Words = "This is a test";

so you could just type:
MsgBox(Words, #6);
Sadly, this would strain the the syntax highlighter. Pointers will have to retain the "@" prefix, and strings would need to be in {"<string>"} form.
Quote:
Originally Posted by link12552 View Post
and if you could define the movements and such, so you don't have to remember the raw codes.
M_UP3, M_LEFT1, or something similar, possibly easier to remember.
I will make a base for something like this but my "Constant Value Editor" will allow this to be customized to whatever the user likes.
Quote:
Originally Posted by link12552 View Post
I love how we're seeing so many new tools all of a sudden. Brings me back to the good old days.
This is what happens at PC.

Good Hackers leave; Nothing happens for a while; Good Hackers come back; Good Hackers teach new Hackers; Good Hackers leave forever; New Hackers become Good Hackers; Repeat;
__________________
あなた は しきしゃ です
わたし は ばか です
  #15    
Old January 8th, 2012 (08:46 PM).
DavidJCobb
RESIDENT RAAAAAAAAAAAAGEMASTER
 
Join Date: Jul 2010
Gender: Male
Nature: Lonely
I find the C-style to be horrifying ugly, and PokeScript's kind of wonky-looking compared to the cleaner style seen in XSE. :< But take that with a grain of salt, since I don't think I myself am going to do any more hacking in a long time.

Inline-strings are a great idea. It's good that you're considering an extensible command database, as there are bytes represent different commands with different argument structures across the games.
__________________
  #16    
Old January 8th, 2012 (09:11 PM).
Darthatron's Avatar
Darthatron
巨大なトロール。
Community Supporter
 
Join Date: Jan 2006
Location: Melbourne, Australia
Age: 23
Gender: Male
Nature: Modest
Quote:
Originally Posted by DavidJCobb View Post
I find the C-style to be horrifying ugly, and PokeScript's kind of wonky-looking compared to the cleaner style seen in XSE. :< But take that with a grain of salt, since I don't think I myself am going to do any more hacking in a long time.
I'm thinking XSE and PokeScript's styles are very similar, and what I've called "PokeScript" is actually a hybrid of the two. What's XSE have that this variant doesn't?
Quote:
Originally Posted by DavidJCobb View Post
Inline-strings are a great idea. It's good that you're considering an extensible command database, as there are bytes represent different commands with different argument structures across the games.
Yeah, I got the idea from reading some of your posts, actually. So kudos to you!
__________________
あなた は しきしゃ です
わたし は ばか です
  #17    
Old January 9th, 2012 (06:58 AM).
tinix's Avatar
tinix
PearlShipper & C Programmer
 
Join Date: Feb 2010
Location: Bratislava, Slovakia
Age: 17
Gender: Male
Another idea ive got is some kind of plugin system, so people can extend the editor without messing with original source code. So for example I want the editor to be able to compile ASM, I make an DLL that can have pre-defined entry point for program to find. Then I open the editor open some kind of dialog for adding extensions and it would load the assembly and add it to the menu (or another dialog with extensions) from which I can invoke the extension.
__________________
Pokémon games i own:
Pokémon Diamond
Pokémon Platinum
Pokémon Ranger: Shadows of Almia
Pokémon HeartGold Version

75% of Pokemon gamers use cheats and specially made codes to make their pokemon battle-worthy. If you are one of the 25% percent that level their Pokemon up legally, put this in your signature.
-Started by SkittyLover77


  #18    
Old January 9th, 2012 (01:49 PM). Edited January 9th, 2012 by hinkage.
hinkage's Avatar
hinkage
Go make some new disaster
Community Supporter
 
Join Date: Aug 2010
Age: 19
I think you should treat Person Events as objects, and things like applymovement as methods. (Java style)

Eg,

#org mainorg
player.lock(); // lock
player.move1(up, down, left, end); // applymovement move1 PLAYER
msgbox.talk1("Hello there, " + \v\h01 + "!"; noclose); // msgbox talk1 callstd msg_noclose
mainorg.call(suborg); // call suborg
player.release(); // release
end;

#org suborg
var4001 = 1; // setvar 0x4001 0x1
if (var4001 == 0x1); // compare 0x4001 0x1, if ==
var4001 = 2; // setvar 0x4001 0x2
return;

// #org move1
m walk_up walk_down walk_left end

// #org talk1
= Hello there, \v\h01!



As you can see, this is all just aesthetics (the comments are PKSV style).

In addition, please use black font for normal syntax. Also give some syntax, like msgbox or if, bold, dark blue font like PKSV does. I find that really helpful. I think being able to add comments to the script would also be very useful. Everything else you've done so far is good. I especially like being able to put movements/text on the same line as the command.

This would help beginners program in a more realistic way.
__________________
(ღ˘⌣˘ღ)
  #19    
Old January 9th, 2012 (02:05 PM).
Sawakita's Avatar
Sawakita
Not Invented Here
 
Join Date: May 2010
Gender: Male
Looks good. I personally like the C syntax better (might just be because of consuetude).

About suggestions, I don't know how much it would be worth it, but what about implementing a VisualStudio-like "intellisense" (sorry for using that word since I know many persons can't stand it, but it explains the idea)? So when you open a parenthesis after the function name, a tool-tip-text pops up showing possible arguments for that function.
__________________



| 1st Gen Hacking: Useful Links | A good example of REAL ROM Hacking |
  #20    
Old January 9th, 2012 (03:43 PM).
Sande
Beginning Trainer
 
Join Date: Jan 2012
Gender: Male
I'm really new to hacking etc but I am actually studying IT. I just had a class with some assembler coding this semester.
I don't know how many possibilities are available for hacking but maybe you can do one of these things:
1) for/while cycle.
2)Or something like this:
[insert command here] * 6; // do something 6 times no matter what it is. Would be easier than a for cycle and better to code. Also, no-one can possibly create an endless for cycle this way. Then again if your stupidity reaches a critical mass it might happen anyway.

Also, working slowly on a hack that will have a lot of puns/jokes and hidden easter eggs in it. I have designed a map and a rough storyline, but as I'm still learning to script it will take a lot of time until I'm ready to come out with it.
  #21    
Old January 9th, 2012 (05:31 PM).
DavidJCobb
RESIDENT RAAAAAAAAAAAAGEMASTER
 
Join Date: Jul 2010
Gender: Male
Nature: Lonely
Quote:
Originally Posted by Darthatron View Post
I'm thinking XSE and PokeScript's styles are very similar, and what I've called "PokeScript" is actually a hybrid of the two. What's XSE have that this variant doesn't?
Now that I look at the specific example you've given, the differences are minimal. XSE (as I usually see it posted here) just looks cleaner because it's lowercase. :\

I've seen other examples of PokeScript and PKSV on the boards, though, and those usually look quite a bit messier. Dollar signs, weird command names...
__________________
  #22    
Old January 10th, 2012 (08:33 AM).
Spherical Ice's Avatar
Spherical Ice
 
Join Date: Nov 2007
Location: UK
Send a message via Skype™ to Spherical Ice
I agree with DavidJCobb's idea for the layout purely because I'm more used to that kind of style.
Though the colours - the orange in particular - tend to hurt my eyes. I'd suggest making ordinary commands (which are in blue) plain black, and then the text using the orange to become the blue. Though I guess then non-commands won't be noticeable...eh, idk. This looks great though, good luck (not that you need luck).
__________________
  #23    
Old January 10th, 2012 (10:18 AM).
Truality
Left for good
 
Join Date: Aug 2011
Gender: Male
Send a message via Windows Live Messenger to Truality Send a message via Skype™ to Truality
The inline thing is a good feature indeed. I'm fine with both layouts, but I wonder if you're going to include something like what XSE has on its friendly user interface; a built-in guide/command list and/or a text adjuster.

Overall, best of luck with the project!
__________________
This is my December . . .
  #24    
Old January 10th, 2012 (11:12 AM).
droomph's Avatar
droomph
mmm gurl that 90s
Community Supporter
 
Join Date: Sep 2011
Location: bar'jách
Age: 17
Gender: Male
Nature: Impish
Also, maybe an x-code thing where it guesses which function you're going to do?

For example I type in "p" and xcode guesses that I'm going to do "printf", so it prints out in gray, "printf ("message");", and if I decide to keep it...

Something like that.

Spoiler:
How about making a loop thing?

I mean,
Code:
@for
for (variable = number, variableoperate, variable condition number)
	loop statement
…
	return '}

next
Code:
	@for
	setvar variable number
	compare variable number
	if1 condition @loop
	jump @next

	@loop
	variableoperate
	statement
	compare variable number
	if1 condition @loop
	jump @next

	@next
It's totally possible.


AND YES PRETTY PLEASE INLINE

aww no mac :(

best of luck!
  #25    
Old January 10th, 2012 (11:12 AM). Edited January 10th, 2012 by Lawrenсe.
Lawrenсe
Beginning Trainer
 
Join Date: Nov 2011
Gender: Male
Nature: Quirky
I prefer the C-style, but lowercased commands and keywords. Also, coming from a programming (Java) background and wanting to take up scripting, I like to see the print command: message.print("this is a message!"); or msgbox.print("this is a message!");. I'm not all that familiar with other scripting formats, but I find applymovement too lengthy of a command; how about reducing it to just move? If you want to move that player, then we use move(player, movement commands) or if any other NPC, we use move(var, commands) where var is the players number or whatever.. I'm just blabbering, lol.

The in-line feature is actually pretty great to implement.

Code:
#org @main
lock; faceplayer;
move(PLAYER, 0x1 0x2);
move(10, 0x1 0x2);
move(10, @movement);
waitmovement();
message.print("a message!", #6); // in-line
message.print(@msg, #6); // or without the hash-tag.
release; end;

#text @msg
= this is a message!

#raw @movement
= 0x1 0x2 0xFF
Something like this. Or not.

Also, the colors are fine except the orange; what about just simple dark gray or something close to black?

Also, how about a looping feature? Oh, like the poster above me said.
Closed Thread
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 07:21 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.