[Gen III]: Jambo51's Tool Showcase
View Single Post
March 25th, 2013 (1:54 AM). Edited September 10th, 2013 by Jambo51.
Glory To Arstotzka
Join Date: Jun 2009
Hey guys, and welcome to my tool showcase!
Battle Script Pro
This helps you to create new effects for moves, and slightly simplifies the actual insertion of a battle script as the tool compiles and inserts it for you!
This thread is ONLY for the tool itself and related discussions. Please do NOT ask questions about the scripting language itself here. Direct your queries about the Scripting Language itself to
Please also ensure you have updated to the latest .NET framework.
Dynamic Offsets - Searches for free space to insert into on your behalf
SQLite Database - Uses an SQLite database to store the commands and information related to them. Quick and small in size!
Coded in C#.Net - Simply the language I am most comfortable with. Sorry Mac/Linux users!
Tabbed Interface - Like XSE, you can have several scripts open at any one time. Makes for easier editing, or even copy and pasting!
Decompilation - Decompiles scripts from the ROM. This is known to be a little slow and buggy and is still in development.
Compilation - Compiles scripts. Well, what else would you expect a Script Editor to do?
Custom Commands - Allows you to define custom commands using a (hopefully) simple format in the commands header file.
XSE Style Definitions - Allows you to define certain strings to have a certain value. Can make scripting easier.
Currently, it only "supports" BPRE, as I haven't added the necessary data to the INIs to support any other ROM, but if this data were to be added, it would work perfectly well.
Note, what this actually means is that the tool won't be able to decompile battle scripts from the effect table, and you won't be able to use the "keywords" I have defined. It will still be able to insert, and decompile, scripts to any given ROM.
Now, I hear you ask, "What do you mean by '
Good question, sir/madam! What it actually means is that it allows you commonly used offsets by referencing a "
Eg, I want to check what move is being executed, and jump somewhere if it is this move, say Pound. Normally, you'd have to do this:
jumpifhalfword 0x0 0x02023D4A 0x1 @somewhere
But with "
", you can do this instead:
jumpifhalfword B_== move MOVE_POUND @somewhere
I feel that the latter is easier to understand, since you don't need to remember the various RAM Locations!
So, to the nitty gritty stuff.
#org - Defines the start of any script segment or a jump anchor.
#define - Lets you define some text string to have a specific associated value.
#include - Lets you include a header file. The header files themselves are just lists of #defines.
#dynamic - Defines the starting search location for dynamically assigned scripts. Necessary if you have any dynamic offsets anywhere in your script. Note, you can have more than 1 #dynamic to assign different parts of the script to different areas of the ROM. I don't know why you would want to do that, but I digress.
#freespacebyte - This allows you to define what byte is regarded as free space in your ROM. Unless you explicitly tell the tool otherwise, the tool will use 0xFF as the free space byte.
Here are some screenshots:
Note, these screenshots are actually a little out of date, as I've redesigned the interface since I took them.
The Main Interface
The Main Interface with some scripts open
The Goto Line Interface
The Find Text Interface
The Find and Replace Interface
A decompiled script, with some basic formatting in place
So you know, this tool is still in development, so if you have any sensible feature requests, or any ideas, or whatever, let me know! I'll try my best to implement them if I like them!
I've tested this quite thoroughly, but I can't guarantee it's bug free. So do let me know if you encounter any bugs. Note, by bugs, I mean occasions where the tool actually crashes or displays garbage data or something. Not occasions where the tool complains about "Unknown Commands" because I know of these and coded in checks to ensure that the tool wouldn't crash when it hit such a command.
Without any further ado: the tool itself.
After downloading, you must press F5 or Help -> Update Database in order to get the most up to date version of the database available. This way, I can ensure that you can easily access the database.
Unnamed Trainer Editor
A new trainer editor which correctly labels the AI and IV values, as well as supporting reading from an INI to help ensure that it should be future proof!
(37.7 KB, 2469 views)
(Save to Dropbox)
(1.23 MB, 1339 views)
(Save to Dropbox)
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! -
View Public Profile
Send a private message to Jambo51
Find all posts by Jambo51
Find threads started by Jambo51