• 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: Awesome Script Editor (ASE)

Which of these features would you like to see in the first version of ASE? (more than 1 possible)

  • Custom color shemes

    Votes: 2 20.0%
  • Solution explorer (project file)

    Votes: 4 40.0%
  • Terminal with commands to delete/compile/repoint scripts

    Votes: 9 90.0%
  • Ability to compile ASM along with scripts

    Votes: 6 60.0%
  • Something else (please write a post!)

    Votes: 1 10.0%

  • Total voters
    10
  • Poll closed .

pokedude9

Creator (with Diego) of AME and ASE
31
Posts
8
Years
    • Seen Jan 1, 2017

    Awesome Script Editor

    because XSE was built in VB6... yikes

    pbJ6wYp.png



    Awesome Script Editor is a new cross-platform script editor written in C++ for Qt. This project is meant to be both a successor to XSE and a companion tool to Awesome Map Editor with the same amount of polish, care, and error-checking.

    Before we dig into all the features/enhancements, it should be mentioned that that suggestions and criticisms are appreciated. Don't hesistate to share your ideas and desired features, and don't be afraid of getting shot down for asking too much of us because much more is possible than you might expect, as shown by the feature set below.

    Features:


    • Syntax highlighting
    • Syntax highlighting (both default and custom themes)
    • Code completion for custom labels, definitions and more (IntelliSense)
    • Real-time script validator
    • Scripting in either XSE or ASE format
    • For and while loops (ASE format only)
    • Project files that can manage multiple scripts in each game; also stores the offsets of functions and entire scripts in order to simplify the erasing process or to reuse certain elements
    • And more!

    Possibly the biggest and most exciting new feature is the possibility to have multiple files in which commands and macroes are defined. So for example, if you implement a new command, you can either directly add it to the default script file or inherit from it and add the new command there. You can even define your own macros, such as "msgboxNormal", which is possible thanks to the editor being able to differentiate between static and dynamic parameters. For example: "msgbox ptr 0x6" is a macro for "loadpointer 0x0 ptr; callstd 0x6"; where 0x0 is static and ptr/the callstd parameter are dynamic.


    Screenshots:

    WLwrvMd.png




    Download:

    No binaries have been released yet but you can download the source.
    Source code: https://github.com/Pokedude9/AwesomeScriptEditor


    Credits:

    Pokedude - UI/backend developer
    Diegoisawesome - Backend developer
    PorygonY - original WinForms design of the intellisense box
     
    Last edited:

    pokedude9

    Creator (with Diego) of AME and ASE
    31
    Posts
    8
    Years
    • Seen Jan 1, 2017
    I don't know what any of those are, so someone would need to provide a documentation. As for animations in general, I'll try to ship custom script commands with the editor which will provide showing/hiding/moving images and objects.
     

    pokedude9

    Creator (with Diego) of AME and ASE
    31
    Posts
    8
    Years
    • Seen Jan 1, 2017
    Hello guys!

    I created a poll on which features you would like to see in the very first release of ASE. I'd be grateful if you participated!

    Best regards
    Pokedude
     

    pokedude9

    Creator (with Diego) of AME and ASE
    31
    Posts
    8
    Years
    • Seen Jan 1, 2017
    Are you joking right now? I was critizised choosing that name because of the achronym (ASS) previously. Changing the name would also break the philosophy behind the 'Awesome' tool chain, so I am definitely not going to do that.
     
    794
    Posts
    10
    Years
  • Are you joking right now? I was critizised choosing that name because of the achronym (ASS) previously. Changing the name would also break the philosophy behind the 'Awesome' tool chain, so I am definitely not going to do that.

    What about Awesome Script Studio?
     

    pokedude9

    Creator (with Diego) of AME and ASE
    31
    Posts
    8
    Years
    • Seen Jan 1, 2017
    I'd rather not have people refer to this editor as "ASS". You know, an ass of an editor. :/
     

    pokedude9

    Creator (with Diego) of AME and ASE
    31
    Posts
    8
    Years
    • Seen Jan 1, 2017
    Thanks guys, the poll is now officially closed. I can't close it explicitly, because Pokecommunity does not allow me to. Just keep in mind I won't count any votes after now.

    I wanted to implement one new feature to the already existing ones for the first alpha and you guys chose:
    The terminal! (90% of voters wanted it)

    The terminal will contain a lot more features than just compiling or deleting scripts.

    • Compile, delete and recompile scripts
    • Open project files and compile/delete/recompile scripts from them
    • Debug scripts
    • Finding free space
    • ...
    I will also implement the solution explorer for the first alpha, because the terminal requires it and I also wanted to add it initially. Any suggestions for the terminal commands are appreciated!

     
    22
    Posts
    7
    Years
    • Seen Feb 28, 2022
    Hello While building this i encountered an error please tell me how to fix it...

    Picture is in attachment
     

    Attachments

    • Untitled.jpg
      Untitled.jpg
      134.1 KB · Views: 20
    9
    Posts
    7
    Years
    • Seen Jul 30, 2018
    OT: Jesus Pokecommunity, why won't you let me log in? I also can't reset my password, because Hotmail keeps telling me that my account may have been hacked...

    Hello guys, sorry for being absent for so long. As you know, university and work is time-consuming and I really lack spare time. What I have done, though, is making my mind up about the design, syntax and features of the Awesome Script Editor language, so today I will show you a little comparison between ASE and XSE.

    Spoiler:

    Those examples show the verbosity of the XSE language and how ASE (the language now called DittoScript due to its flexibility) solves common "cosmetic defects".

    1. No #org @bull****. Not really accurate and miserable readability. ASE uses python/C/C++-like labels that are easy to use:
      Comparison: https://hastebin.com/nomivemema.rb
    2. Inline stuff. As can be seen in the examples above, pretty much everything can be written in one single line now. Messages can be inlined by simply putting the message in "Quotes", big lists such as movements or items can be put in [brackets]. Note that not everything needs to necessarily inlined. You can still use extra labels, if you desire to do so.
    3. Conditional branches. Bored of doing compare VARIABLE XYZ and if CONDITION goto LABEL? Me too, that's why I decided to get rid of this (you can still use it, though) and "invent" inline-blocks. The compiler behind this will automatically convert the snippet to compare, if and 2 auto-generated labels.
    4. Loops. You won't need loops apart from minigames and similar very often, but they can be quite useful. ASE will support for and while loops.
    5. Variable juggling. You can now easily operate with variables, without calling setvar, addvar and subvar all the time. I am still unsure about the syntax, but here is a first design idea:
      https://hastebin.com/puxosohace.rb

    That's it for now folks. There are a bunch of new things to be implemented into ASE too, but I will talk about them later. But stay hyped for this. Once it is finished, all problems with scripting, rom fragmentation, script deleting/repointing will be forever solved.
     
    794
    Posts
    10
    Years

  • Looks awesome, can't wait for it.
    As for the variables, I'd got with a simpler identifier like var, getting rid of parentheses and money symbol.
    I'd prefer something like that:
    Code:
    var_0x8000 = 5
    var_8000 = 5
    var8000 = 5
    This could be applied to flags as well.
    Code:
    flag_513 = 1
    if (flag513):
         flag_514 = 0
    An option to add your own commands or modify existing ones would be also cool.

    I'd also like more complex macros, so similarly to XSE, stuff like:
    Code:
    #define PKMN_WEEDLE 12
    but also
    Code:
    #define GET_EVS (callasm 0x807070 | 1)
    Another feature could be better control and error handling, there could be an ini with various stuff like number of usable vars and flags, so the compiler would throw an error upon doing:
    Code:
    checkflag(0xFE01)
    I think one thing that could help, especially new people, is giving warnings on not ending applymovements(so 0xFF as the last movement byte) and pokemart lists. And since we're with applymovement cmd, pls add usable macros to it. It would be much much easier to script:
    Code:
    MOVE_RIGHT
    MOVE_LEFT
    JUMP_UP
    EXCL_MARK
    END_MOVEMENT
    More warnings in general. There were times when i accidentally forgot about something or made a stupid typo that resulted in an hour debugging session. :P Examples are:
    - using callasm with an address that's not + 1(or actually that's not | 1)
    - not having end at the end of the script
    - not having return statement on a label that is called
    - no waitstate after command that requires one
    - using a command that has no effect in Fire Red or in Emerald

    And please add syntax highlighting. :P
     
    9
    Posts
    7
    Years
    • Seen Jul 30, 2018
    Looks awesome, can't wait for it.
    As for the variables, I'd got with a simpler identifier like var, getting rid of parentheses and money symbol.
    I'd prefer something like that:
    Code:
    var_0x8000 = 5
    var_8000 = 5
    var8000 = 5
    This could be applied to flags as well.
    Code:
    flag_513 = 1
    if (flag513):
         flag_514 = 0
    An option to add your own commands or modify existing ones would be also cool.

    I'd also like more complex macros, so similarly to XSE, stuff like:
    Code:
    #define PKMN_WEEDLE 12
    but also
    Code:
    #define GET_EVS (callasm 0x807070 | 1)
    Another feature could be better control and error handling, there could be an ini with various stuff like number of usable vars and flags, so the compiler would throw an error upon doing:
    Code:
    checkflag(0xFE01)
    I think one thing that could help, especially new people, is giving warnings on not ending applymovements(so 0xFF as the last movement byte) and pokemart lists. And since we're with applymovement cmd, pls add usable macros to it. It would be much much easier to script:
    Code:
    MOVE_RIGHT
    MOVE_LEFT
    JUMP_UP
    EXCL_MARK
    END_MOVEMENT
    More warnings in general. There were times when i accidentally forgot about something or made a stupid typo that resulted in an hour debugging session. :P Examples are:
    - using callasm with an address that's not + 1(or actually that's not | 1)
    - not having end at the end of the script
    - not having return statement on a label that is called
    - no waitstate after command that requires one
    - using a command that has no effect in Fire Red or in Emerald

    And please add syntax highlighting. :P

    1. All of the commands (and also macroes like msgbox) are stored in an XML file and can therefore be edited as desired. You can even use multiple script command files and switch between them within the editor.

    2. The macroes can be as complex as possible, as they are replaced by their actual value before compiling. You can even have a macro in a macro ^^.

    3. Error handling might not work everytime as there are people who have modified the engine and maybe flag 0xFE01 would be valid for them, we don't know... As for applymovements and pokemart, ASE will not require you to end the movement with 0xFE and the mart with 0x0, as it will automatically append it, if needed.

    4. ASE will of course include a movement editor which does all the dirty stuff for you (maybe even with preview :3). No need to struggle with lists and similar.

    5. Thank you for your suggestions about the error handling. I guess I will do further surveys about them later. Syntax highlighting will of course be included, plus an auto-completion system which detects all your macroes, labels and commands.

    In general I will motivate people to create "script header files" in which they store commonly used functions, macroes, movements and pokemarts. This way, you will keep your code clean, reusable and you will waste way less space.

    Best regards
     

    Platinum Lucario

    The Legendary Master of [color=#D8D48C]Light[/colo
    1,607
    Posts
    16
    Years
  • I do plan on helping absorb ASE into AME in the future, currently right now, I'm ensuring that it can be built with ease. But unfortunately there's no build instructions found anywhere.

    But I have noticed one thing in AwesomeScriptEditor.pro:
    Code:
    #
    # QMake Settings, 4
    #
    CONFIG(debug, debug|release) {
        unix|win32: LIBS += -L$$PWD/../QBoy/bin/debug/ -lQBoy
        unix|win32: LIBS += -L$$PWD/../QCodeEditor/bin/debug/ -lQCodeEditor
        unix|win32: LIBS += -L$$PWD/../QTerminal/bin/debug/ -lQTerminal
    } else {
        unix|win32: LIBS += -L$$PWD/../QBoy/bin/release/ -lQBoy
        unix|win32: LIBS += -L$$PWD/../QCodeEditor/bin/release/ -lQCodeEditor
        unix|win32: LIBS += -L$$PWD/../QTerminal/bin/release/ -lQTerminal
    }

    This indicates that in order to build Awesome Script Editor, you need QCodeEditor and QTerminal. I have found some repositories that have that name, but they might not be the correct ones.

    Once I've either figured out or have received help from anyone who knows how to build ASE, then I'll begin the process of experimenting around with it and absorbing it into AME.

    That's something that I'm planning on doing currently.

    Edit: I decided to use an earlier commit of ASE (the one before the QTerminal and QCodeEditor dependencies were required), since I couldn't figure out how to build QCodeEditor and QTerminal, but not only that, but I wasn't sure if it was the right ones that ASE depended on. And now that I've got both ASE and AME in a buildable state, it's time for me to start experimenting around with it, and learning how to add in the functions, as well as finding out the locations of where the data is stored in the ROM.
     
    Last edited:
    Back
    Top