View Single Post
Old March 25th, 2013 (1:54 AM). Edited September 10th, 2013 by Jambo51.
Jambo51's Avatar
Jambo51 Jambo51 is offline
Glory To Arstotzka
    Join Date: Jun 2009
    Gender: Male
    Nature: Quiet
    Posts: 732
    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 here.

    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 'keywords'"?

    Good question, sir/madam! What it actually means is that it allows you commonly used offsets by referencing a "keyword".

    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 "keywords", 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.
    Compiler Directives:
    #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!
    Attached Files
    File Type: zip‎ (37.7 KB, 2469 views) (Save to Dropbox)
    File Type: zip‎ (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! - Here!
    Reply With Quote