ROM installer for Windows & Mac (and Linux?)

Anyone have experience developing for Windows or Mac and want to build a nice Arduboy ROM uploader? I’m imagining something to take the place of the Arduino IDE that would accept hex files and upload them to the device with a nice UI. Perhaps it could also deal with persisting EEPROM states between games. What it would need to do (at the most basic):

  • Accept a .hex file, upload it to Arduboy
  • Dig around in /tmp/, /var/folders/, whatever windows uses and grab compiled hex files

One could easily imagine software authors doing the last step manually. It’s not hard to get the path from the log… and you’d only need to do it each time you wanted to issue a new release. Get path, copy hex file, publish to website, done. (I’m referring to the Arduino IDE build process here).

The boot loader on the Arduboy acts as a AVR ISP mkII. The “serial port” in question is actually over USB, but most OSes completely abstract that. You’re pretty much (at a developer level) still talking to just a boring serial port. The protocol in question here isn’t that complex. You could even “cheat” and piggy back off of something like avrdude, though then you force the user to have other tools installed - which seems annoying for a lot of new users.

I’m sure I could quickly build this out in Ruby, but I think that would have limited appeal. What most Arduboy users would like is an easy tool for their OS of choice that they just installed and then it just worked.

I do realize if someone wants to install libraries (or libraries end up packaged with all source, yuck) they can build the binaries themselves - but I also think a lot of users wouldn’t mind if they could just skip all those steps… download a “ROM”, drag and drop it onto the uploader and then boom their new game is installed.

Anyone interested in working on this?

1 Like

I have mixed feelings on having a ROM manager.

One of the awesome aspects of the Arduboy community as it stands now is that the only practical way to share programs (games) is via source code. Having the source available means that people can learn from it and build even better things.

On the other hand, lacking a ROM manager of some form mean that there is a barrier to entry. If you want to just play a game, you’ve got to basically be a developer (or at least able to install the development tools and run them).

I’ve done a little poking around, and the best path is probably to build something on top of avrdude. It’d be slick to do something based on Chrome, but the codebender.cc plugin did evil things by basically taking over the USB port always, very annoying if you wanted to also run the arduinio IDE.

So yeah – I’m sort of interested in doing something like this. If we can get avrdude wrangled to be the ‘back end’ then we can avoid having to re-write the logic needed to talk with the bootloader. With the leonardo there is a trick about setting the USB (serial) port to 9600 baud or some such to cause the device to drop into bootloading mode for 8? seconds.

There exists avrdude binaries/packages for OSX/Windows/Linux. We’d just need to wrap it in some UI magic. Hopefully something portable enough (and easy to get working). To be successful a ROM manager has to be easy to install, easy to use.

3 Likes

Not necessarily. codebender lets you install sketches directly from your browser, without needing any development tools installed on your PC.

1 Like

I have used codebender.cc and as I wrote in my initial response, I found that the Chrome app appeared to take over the port that my Arduboy was connected to. This interfered with my using the arduino IDE (on Linux). I didn’t bother to debug the problem, I just removed the Chrome app.

I did do some playing with codebender.cc and created a simple button test https://codebender.cc/sketch:172067

I like the idea of having a web IDE, but it’s sort of anti-retro to require an always onilne connection to work. (again, my opinion).

A stand-alone game manager IF done right, could be nice. Also allowing the capturing and sharing of .hex files helps protect against library mis-matches.

I played a little bit tonight with avrgirl https://www.npmjs.com/package/avrgirl-arduino – it is able to flash a .hex file but fails to do so fairly often. I might take a look at the node.js code to see if there are some bugs in their leonardo handling code. I got a variety of errors (again under Linux) - reset failures, SEGVs, etc. Repeated attempts to flash a .hex file did result in it working just fine… but that’s not a good user experience.

1 Like

This doesn’t appear to be a problem with the Firefox plugin under Linux. I’ve been able to program from a port using the IDE, while Firefox was on a codebender sketch page with the same port showing as detected.

I think this concept will be much more important with the next version of Arduboy that will have an SD slot. To have a package installer that will flash the ROM and load the SD with all the game files will be really useful. Without this type of package installer it could be pretty rough making sure all the files go to the right place.

I respectfully disagree. Having used “flash carts” for handheld game consoles (Nintendo DS for example) - once the bootloader has some way to read/select files from the SD card, it’ll just be a matter of loading the card up with a bunch of .hex files.

The Gamebuino already has SD card support and a loading system. http://gamebuino.com/wiki/index.php?title=Bootloader

The point of a ROM installer is to make it really simple to load games onto the current Arduboy. Ideally as a stand-alone (not connected to the internet) solution.

I didn’t even think to try FireFox – installing the plugin now… >> Cool, seems to work great… even alongside the Arduino IDE [edit: hmm… now I’m stuck in weird USB serial port land… this may be a Linux issue more than anything else (and more specifically my weird setup problem)]

A codebender.cc style website that made it super trivial to install games would be cool. I wonder if we can re-use the codebender plugin from a different web page…

Hi Andrew!

Excited to see you tried avrgirl-arduino to see if flashing hex files to the Arduboy would work. Sorry about the bugs :frowning:

While I don’t have an Arduboy to test with (yet!), after reading your post I pulled out both my Linux laptop and an Ubuntu VM on my MBP. After testing with some leo-esque boards, I saw the same thing with some resetting errors as you described. Doh. Must have intro’d some code along the way which broke things on 'nix.

I just released a patch which may help resolve some of the issues, if you’d be so kind as to test avrgirl-arduino again after reinstalling the lastet version? No pressure to use avrgirl for flashing ROMs instead of codebender, but would really appreciate the feedback to see if it fixed anything for you :smile:

Thanks!
Suz

2 Likes

Have anybody try to upload HEX with this? http://paulkaplan.me/HexUploader/

1 Like

it still needs Arduino IDE to work so …:unamused:

Can you link me to the fix/patch you’re referring to, please?

Most of the issues I saw were timing glitches… I have it working pretty solid now on my Mac… I’d say 95% hit rate… needs a little more tweaking.

Hi Josh (and others in this thread)!

I finished up another tweak to AVRGirl Arduino a couple of days ago, due to the extra wait before writing to memory the Arduboy requires after resetting. I finally have an Arduboy in possession (yay!) and it seems super solid now compared to issues previously.

Using AVRGirl, I made an Electron app that will flash a .hex file to an Arduboy the easy way. Feel free to check it out in the link below. I would love for peeps to test it and let me know if it works for you! :slightly_smiling:

The download links are in the README from the link above.

If you’re using it on Linux, you’ll need to run the app with admin privs unless you’ve granted special access to the USB devices without needing admin granted.

They are rather LARGE downloads, I am sorry :frowning: Electron is essentially an entire browser and node packaged as one.

I want to add things like flashing from a url, better UI styling for it all, better logging of errors etc etc. I’ll be adding to it continually :smiley:

Thanks!
Suz
PS. The Arduboy rocks, btw <3

2 Likes

gah, I didn’t hit the right reply button, please see my reply to you above.

Can you point me to the exact commits on github that you fixed things with? I’ve already vendored your code to make other changes.

sure, it’s this here: https://github.com/noopkat/avrgirl-arduino/commit/c83f657ab6b899cb363dc09cf7c7d5a38f9b499d

as you can see, it’s a temporary hack until I write up a serial connection polling service to replace the serial listing service which is more ideal for some leonardo boards :slightly_smiling: on the flip side, this is concise enough for you to work into your fork of avrgirl arduino, I imagine :smiley:

Here is CodeBender’s .hex uploader (in beta) if anyone has time to do something with it:

@dreamer3 what about Xloader,it uploads hex files easy to anything with arduino bootloader,simple little windows app.it works great.

For those having trouble using this with leonardo (or any atmega32u4 board) – I got it to work by using putty to put it into bootloader mode, just connect putty to the correct com port at 1200. As soon as you close putty it will go into bootloader mode – you need to check which com port is created while in bootloader mode and set xloader to connect to this. works great! with some modding i think this would be great simple hex uploader.
https://github.com/dunk8888/Xloader-Arduboy-Loader#xloader-arduboy-loader

1 Like

I know that somebody within the community is making a Uploading program(Too lazy to look). Modern Browsers have the ability to launch other programs via hyperlinks(and can open up files, too).
What about this setup:

  1. Log onto the Arduboy Game Catalog.
  2. Select the “Download!” Button.
  3. The program automatically uploads the game to the Arduboy!
1 Like