Arduboy Toolset

I’ve added a basic license editor in lieu of finally releasing the new version with the working packages. I’ve heard from a couple people that licenses are important to them; this setup gives you both the full free reign to edit the license however you want (for things like dual licensing or licensing art differently than the program), and also gives you a link to https://choosealicense.com/ to help you choose one if you don’t need that complication.

Hopefully this will be enough for now. It will be stored in the generally-agreed-upon “LICENSE.txt”, and the parser will accept the following as alternate filenames: LICENCE.txt, LICENSE, and LICENCE. But the package creator will always write it as LICENSE.txt. Note that currently, because a consensus cannot be reached on the format of info.json, I am not adding any license-related information to info.json.

As an aside, this package editor will produce a format with a new "schemaVersion": 4. There are no breaking changes for most tools, just some new fields and the removal of fields no tool is really utilizing:

  • Added cartimage to each binary object. It lets you specify the image that will show up in carts for your game. This is a recommended field (the editor lets you assign an image to the binary, see the screenshots). If none is provided, cart.png is implicitly used, if it exists.
  • Removed specific contributors fields: sound, art, idea, publisher, and code.
  • Added contributors array. This replaces the existing 5 fields listed above. The format is shown below.
  • Standardizing the device field in binaries to the following values: Arduboy, ArduboyFX, ArduboyMini. Use Arduboy for basic .hex files that can be run on all three systems. Setting FX data for an Arduboy device is an error, and you can reject it as such. Use ArduboyFX for binaries compiled specifically for ArduboyFX and which may contain fx data. Use ArduboyMini for the same, and again which may contain fx data.

Here’s an example (not all fields shown):

{
  "schemaVersion" : 4,
  "title" : "My game",
  "author" : "me",
  /* Other fields such as buttons, screenshots, etc */
  "contributors" : [
    {
      "name" : "Dude",
      "roles" : [ "Artist", "Programmer" ],
      "urls" : [ "https://etc" ]
    }
  ],
  "binaries" : [
    {
      "filename" : "somegame.hex",
      "flashdata" : "somegame_data.bin",
      "flashsave" : "somegame_save.bin",
      "device" : "ArduboyFx",
      "cartimage" : "somegame.png" /* Optional, defaults to cart.png */
    }
  ]
}
1 Like

Latest release, see notes on changes if you like. A lot of things were overhauled. Please prefer this version over 0.5, as the previous version produced incorrect .arduboy package files that are unreadable by many other tools. If you previously produced .arduboy exports using the old versions, you should re-export with this new version.

I’m going to take a break for a while again. I hope that if anybody uses this new version, it proves useful in some way. When I come back, I want to add some more neat features to it.

5 Likes

I suggest we update the “official” Arduboy Game Format Guide: .arduboy files topic with information on the new schema. (A forum administrator or moderator with the appropriate privileges will have to do this.)

The actual JSON schema for info.json should be maintained somewhere. The current version 2 schema is “archived” in the Team-ARG-Museum on GitHub. The best place to maintain it would probably be under the Arduboy account on GitHub, if @bateske can ever get this account back in shape.

3 Likes

I can help anybody who does that, I’m very familiar with the format at this point

1 Like

After using this app for just over a week I absolutely love it so a massive thankyou to the developer/programmer for making it.

5 Likes

I’m going to go live on twitch tomorrow at 2023-09-18T23:00:00Z time to go through the toolset!

@haloopdy has offered to join via chat to help walk me through it!

4 Likes

Looking forward to it!

(Lots of edits because the previous post said Tuesday but the screen didn’t update until I already posted it lol)

Just had a chance to play with it before the stream and the Arduboy Toolset is the best thing to happen since the flash mod! Nice work!

2 Likes

Thank you, though I think that award goes to Ardens!


Anyway, @bateske found some weird bugs in stream and I fixed them (I hope), along with some stuff that’s been bugging me. Minor update; if you haven’t run into issues, you don’t really need it: Release v0.6.1 · randomouscrap98/arduboy_toolset · GitHub

I’m still planning on adding some cool features in the future, and I was asked to add some kind of midi converter, so hopefully that turns out well.

4 Likes

I want to add FX data generation to the toolset, maybe even as the next thing, but I was wondering if there’s anything more that could be in fxdata.txt than what is described here: https://github.com/MrBlinky/ArduboyFX/blob/main/examples/basic-example/fxdata/fxdata.txt

If that’s the whole thing, I can get started with an interface for it. I think to start with it’ll just be a simple “takes an fxdata.txt file and outputs the relevant files” section, but in the future it might be more robust. At least for now, I think I will preparse the fxdata.txt and give you information about what it will generate, such as detected image tiling, widths, etc.

2 Likes

There is also support for namespace but I wouldn’t be able to tell you it’s proper usage. Prince of Arabia uses it so I would look there.

This is a good start for those who don’t have Python installed (it’s not straightforward on just about any system for beginners).

Based on what I’ve seen so far from this tool I can imagine this meaning a GUI tool to help create/manage the fxdata.txt file. Having a GUI tool to add/remove values of various types in there would be extremely useful especially for beginners. I myself will obviously stick with editing the text file in my text editor, but I’m also hardcore and do as much as possible via command line lol.

FYI: If you run into any oddities with Qt (there’s not many, but there some caveats), I’ve been using Qt with C++ (the python bindings are identical in every way except in Python) for 15+ years and I have found some clever workarounds to certain things. So if you need any Qt specific help I’d be more than happy to oblige (though for some, figuring it out is half the fun :wink:).

2 Likes

Thank you, if I get stuck I’ll definitely ask.

Yes, something where you add images + data and such and set the tiling and other parameters instead of through filenames

1 Like

There is also the ability to include files and to create arrays of images. These can all be seen in action in Prince of Arabia.

2 Likes

so satisfying…

(the tool could already do this, just had to do it a lot lately)

3 Likes

One thought I had on the UI for uploading games. Instead of a checkbox for uploading flash data why not just have the input area be blank by default and if you browse and select flash data then it would upload that along with the hex instead of having to first check the box?

1 Like

Because that first screen’s fx data is only for development titles and should NOT be used for playing “regular” fx games, as your fx saves will always get overwritten if so. Perhaps I should make it more obvious what that’s for so people don’t think it should be used for fx games…

2 Likes