• 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?".
  • Staff applications for our PokéCommunity Daily and Social Media team are now open! Interested in joining staff? Then click here for more info!
  • 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: “Sapphire” – A PokéScript Editor + Assembler/Debugger

Status
Not open for further replies.

Alexander Nicholi

what do you know about computing?
  • 5,500
    Posts
    15
    Years
    Current version: 0.0.0
    Sapphire is a Qt5-based GUI designed for editing and assembling PokéScript code files.
    Its brother, Lapis, functions as an assembler, disassembler, and debugger for Sapphire that can also run as a standalone program.
    Features
    • Standards compliance: Adheres to Revision 5 of the de facto PokéScript Standard
    • Cross-platform compatibility: Official support for both Windows and Linux, in both 32- and 64-bit flavours
    • Intelligent UI: Sapphire aims to be as comprehensive and user-friendly as possible
    • Standalone assembler: You can call Sapphire's backend, Lapis, from your own program if you want!
    • Free Software: Free as in freedom, not just as in price. Lapis and Sapphire are licensed under the GNU GPL version 3.
    • Open Source & GitHub: It's easier than ever to fork Sapphire and work on it yourself!
    About Sapphire & Company
    Lapis and Sapphire were born together with the goal of upping the ante for the quality of Pokémon ROM hacking tools, and creating a user experience that is on-par with the rest of the world's good software.
    A recurring issue within the realm of Pokémon ROM hacking are tools that are "good enough for now." It's seen all over the place, particularly with entire GUIs that do one or two specific things, or the often dreaded .NET app for the WINE user. We see how that worked out for Advance Map, didn't we? Similar should be done with the messes that are XSE and PKSV. PKSV-UI effectively lacks support for Emerald, and good luck trying to compile it to change anything as the code is a big mess that makes no mention of needed dependencies (we're not even sure it compiles at all). XSE is written in the dying-nearly-dead VB6 language and also has a mess for source code, and has a broken lexer. WIth MEH and its port to D, BEH, seeing to replace Advance Map, Sapphire intends to do the same with both of these old programs; it's our intention to lead the way for the remainder of the Pokémon ROM hacking desktop development scene.
    It's time to move away from Windows-exclusive development, to show etiquette in both code and design, it's time to do things properly. And with that, it's also time to try something new. Both Lapis and Sapphire are written in one of the most powerful, versatile, and popular languages around today: C++. With them we aim to achieve an acceptable writing style, with excellent refactoring (need I repeat myself), generous code spacing for readability, and finally complete documentation of every class, function, method, and other block. Sapphire aims at providing a cohesive graphical experience for all kinds of users, regardless of how much you use your keyboard over your mouse (and vice versa), or what your preference is for looks. Along with that, it aims at allowing for generous user customization, utilizing "AppData" on Windows and user configs on Linux. However, Sapphire will provide some aesthetic and functional differences between operating systems, so they are only as synonymous as they need to be. We think that changing and "seasoning" the application for its specific OS is necessary for the proper experience.
    Besides these two core programs, Sapphire will soon see even more development! A full planned port of the two programs to C♯, under the working title "Cerulean," is being planned by user Team Fail.
    A sample screenshot of Lapis on GNU/Linux.
    Releases
    As of now, both programs lack what you would call a "working release." However, anyone can clone the GitHub repo and compile it themselves to take it for a test run – to compile, you need GCC 5.2.0, Boost 1.59.0, and a Linux environment, preferably an Arch-based one.
    Don't worry though, production is well under way! I can tell you that I'm fairly fast with getting things done with the application, and new things are getting added/tested each day. What you can expect: First Lapis will be released on Linux, then it will be released on Windows. Next Sapphire will be published for Linux as an interim "gamma" release, and then it will be ported to Windows and released there. From there you can expact feature additions based on you guys' input, along with anything else I hadn't thought of before that's worth implementing, and that'll make up the current, functional product.
    Important: If you are a developer for OS X, Solaris, or BSD, are looking for something to code and have proof of work, don't hesistate to contact me! I would love to get this program ported to more operating systems.
    * only for porting Lapis and other command-line components, not the Sapphire GUI
     
    Last edited:
    Cant wait to see this finished, now is the command prompt style ui the actual program? If so thats pretty cool.
     
    Cant wait to see this finished, now is the command prompt style ui the actual program? If so thats pretty cool.
    Well, the command-line interface you see in the OP is actually Lapis, not Sapphire. Sapphire will be a GUI just as much as Photoshop or Chrome are. :P


    I thought I'd give everyone a behind-the-scenes sort-of update with this:
    Spoiler:


    What I'm doing with the program at the moment is called unit testing – basically a quite effective method of removing runtime errors before you encounter them. My medication only lasts for so many hours, so this helps pick up the slack as the logic map I have going mentally falls apart in the later hours. Still though, despite having completely written out the CLI and the preprocessor, I'm still only about half-way through with the former with unit testing. Sorry ^^'l;
     
    Geez the new Pokescript manual was a long read XD but after reading that then re-looking at this, I'm excited, really can't wait to see screenshots of how the program will look!! ! :D
     
    [PokeCommunity.com] “Sapphire” – A PokéScript Editor + Assembler/Debugger


    Good job, Nick. If I knew D, then I'd chip in. Too bad I don't. or barely any language for that matter. So... you can have my moral support.
     
    Good job, Nick. If I knew D, then I'd chip in. Too bad I don't. or barely any language for that matter. So... you can have my moral support.
    Well thank you! And I don't mean to burst your bubble, but Lapis/Sapphire is switching to C++ due to D lacking adequate support (no online help + conflicting/outdated manual = impossibruu). Also... just saying, BEH hasn't seen a commit in over a month.

    And don't get me wrong here. I love D to death as a language. The problem is, the other developers I rely on... don't so much! With the move to C++ will come not just a smaller and (vastly) faster program due to the language being so close to the metal, but more control over my program which means (much) easier bug fixes than in D. Plus we still have goodies like exception handling, namespacing, classes, and other stuff anyone usually needs. But all in all, coming from D made C++ the most logical choice to port to. And I'm doing that now, take a look:
    Spoiler:


    Glad to hear y'all's support for this. It's somewhat of a big deal for me; my first real desktop application and I decided on making a compiler + GUI... what luck lol
     
    I thought it'd be worth a mention that Lapis is abouuuut half-way through its port to C++. I just reduced our handler for command-line options from over 1,000 lines to under 200 thanks to Boost, and it output this:

    [PokeCommunity.com] “Sapphire” – A PokéScript Editor + Assembler/Debugger

    (Windows won't be getting a separate syntax for those. I could write a quick converter though...)


    I'll put this in the OP to replace the old screenshot. After I get it ported, you guys can expect Lapis to soon have basic assembly capability! I should write this with releases in mind haha, some part of me wants to put out a complete product first but hey, this is here... lol. I won't keep y'all waiting for too long.



    Update
    Lapis is now completely ported to C++. We've also started branching for our edits to the program so as to not disturb master.

    For those of you who are really interested and really bored, there's a sample binary in the root directory if you want it. :P

    More importantly, I've begun working with DarkZeta on porting releases of the program to other operating systems, namely Solaris and OS X. So if you were bummed out by us initially supporting Windows and Linux, you can turn that frown upside down! Unfortunately though, for you DOS users... we've dropped support. We're so sorry.
     
    I've got some updates for y'all with Lapis!

    First off, if you haven't noticed because you're on a smaller screen resolution… the thread images are all using high-resolution assets! You should be fine at 4K, even, at least with everything but the program preview screenshot (for now). Sorry, I'm stuck at 768p for the moment, it'll have to wait!

    Anyway, onto Lapis itself. We've added yet another library to our repertoire to accompany the UTF-8 library: YAML! This code enables us to use YAML-based config files, which are a really good replacement for INIs. Unlike INI, YAML has concrete rules for behaviour, can nest, provides differentiation between strings and other types, and just like INIs it has a very low signal-to-noise ratio! It'll be super-readable and super-logical for those of you who want to tweak stuff :)

    After a few days hiatus I'm getting back to coding the program, too. Our friend Tinix unfortunately has been busy lately, and DarkZeta has been dropped from our active contributors list (though he's still welcome on board if he so chooses). We'll keep pushing forward though – not like I'm going to stop now, haha. :P
     
    Status
    Not open for further replies.
    Back
    Top