Build your own Arduboy FX Cart Image

No. Currently, I just place the .hex, .png and .bin (for FX data) files in local folders and run a fork of this flashcart builder. It works great for me, and as a benefit I have my flash cart builds version controlled.

I plan to use your tool, though, to share my config more broadly once I have it ready. I’ve wanted to expand on mine, and rearrange a few games, for a while, but I’m on the home stretch of finishing off the Arduboy STEM builds (today is the last session :slight_smile: ), and I’ve been swamped.

Now… I can’t remember if I’ve tested them, but Mr Blinky shared a link to the original 8bitCade that has a bunch of games pre-compiled for SH1106, which may help me (or others) when I get back to finishing up my collection.

Actually, I do have one more question about your tool. I was planning on using it to find missing gems for my collection (like you, I prefer to keep a ‘curated’ list, not the whole lot of them), and was hoping that it had links to the source where available (like eried’s collection does, for instance).

In reality, I’ve probably already got most of it downloaded but it could be useful for anyone who has to compile from source. I see that you have the source in .zip files in your repo for many of the games. Perhaps the version X.X text in under the game author in the modal could be a link to download the source for games that contain it.

1 Like

Are the one action should be ‘Rooftops’ … I have fixed that now.

Ahhh … that would be nice. I wished we had done that from the start however I designed the system to use the existing CSV format of @Mr.Blinky’s system and it does not have a column for this. The intent was / is that Arduboy.com could take over the site if they want.

I also didn’t want to have a proper database for this same reason - I didn’t know if Kevin’s site has a DB instance behind it or one that is usable so I kept it simple

I inherited those from the repos of the official Arduboy and 8BitCade XL carts. I actually do not want to keep the source at all as it is just something else that I need to maintain and try to keep in line with any updates the original authors might make.

A link to the source would be a much better idea.

2 Likes

Yeah, I don’t blame you. Nice to avoid it when you can. There are some easy hands-off options, like Firebase, though, that work well for these sorts of small projects without much administrative overhead/burden.

Perhaps a version 2.0 feature. Again, something I’d be happy to implement at some point down the road (I do this for a living, so not a big effort for me) - just lacking the spare minutes for the time being.

The tool is already great, as-is, and this feature would only benefit a subset of us in the DIY space.

Got this working pretty easily and updated the games on both my Arduboy FXs (the one im using to develop on and the one i just got in the mail a few days ago just to play on :slightly_smiling_face:) but now that im trying to add my own games i had a quick question (and sorry if this might be addressed somewhere and i missed it)- is there any suggested best practices for getting a PNG file? I tried opening a game in the emulator, taking a screenshot, and cropping/resizing to 128x64 (in paint then in gimp) but came upon some issues… i can probably get it working later just by showing/snapping to a grid but ran a little short on time before work, just figured id ask in case there might be an easier/quicker way. Thanks!

I can load up SQL to handle the database. The main site runs squarespace which doesn’t allow any other hosting but I still have old.arduboy.com which has the old site still running on it just the wordpress is broken because it’s still trying to get content from arduboy.com

At some point I would be interested in hosting this but this seems to let @filmote develop quickly right now.

2 Likes

Yep … I never thought the page would evolve as far as it has.

LOL … I am a developer so it should be easy for me too. My own site provides a MySQL background which I have used for other things but not knowing what the end result was going to look like, I opted to stay with the CSV files. That way, no one can hack the site and trash the DB … it also means people could do a PR on the CSV files to help add games (though no one has done that yet).

More games? Anything that should be permanent?

Half way there … when the game is running in the emulator, press the ‘P’ key and it will produce a 512x256 PNG for you. You can then easy resize this to 128x64 in paint or whatever.

Right. While we are still rapidly developing features and populating it, it makes sense to leave me to run wild. We can look at moving it later. Howev

2 Likes

One can easily be added.

I think a database would kind of be overkill for the amount of data it needs to handle. Also a CSV file would be easier to use with different tools.

1 Like

Yeah, I know. When I started, it didn’t anticipate your involvement. Glad you got on board to help with the BIN generation. My 1.0 release was going to be you download the repo from github, generate your CSV file and run the existing scripts.

My 2.0 was (hopefully) to decipher you python scripts and create a PHP version. When you joined the project and made that a reality and early, the need to stick to the CSV structure sort of was less important.

I agree. An advantage would be that we have a lot of descriptions and so forth replicated across the ‘full enchilda’ csv, the XL csv, the PPOT.csv, the PPOT_XL.csv and the curated list. This would get slightly worse if we were to host a version for the SH1106 home build. A database would allow you to de-dup this data.

A second advantage would be the ability to host a voting / rating system for games. Something I would love to do!

1 Like

If you were to add more metadata…
I found when compiling the EEPROM game list, it was really helpful to store two URLs:

  1. "Source" - link to the main repository. Often GitHub, etc. but sometimes obscure .zip archives hidden away on a forum post, dropbox or personal website, etc.
  2. "Website" - link to the ‘homepage’ or origin of info and support. Normally the Arduboy forums, but sometimes social media posts, personal websites, etc.

Whenever I discovered a new URL, I tried to submit it to the Internet Archive for backup purposes. Based on what happened with Team ARG’s site… some caution needs to be taken here(!)… perhaps anything outside of GitHub and this Community, should always be linked to the archived version?.. It’s a tough balance between staying up-to-date and protecting users from unwanted changes…

2 Likes

While it’s possible to edit CSV files with spreadsheet software, I think that using a format that identifies fields with a name rather than an index would be better.

Partly to make it easier to edit by hand without needing anything more specialised than a basic text editor, and partly because it would make the format self-documenting.

In particular, I think either JSON or something even simpler like INI files, Recfiles or .properties would be nicer to work with and a bit more robust.

JSON would probably make the most sense because then games could just reuse the format that’s already in use for .arduboy files, though from an ‘ease of implementation’ perspective, something that’s just key: value without any kind of fancy compound data types or nesting would be easier to get up and running.

(Also, technically the ‘CSV’ files are actually ‘SCSV’ - semicolon separated values. :P)

One possible way to reduce the amount of duplicated data without using a database would be to have each game stored as a .arduboy file, then you’d just retrieve the information from the embedded .json file, which would mean the curated lists could omit the duplicated information (title, author, version et cetera).

Remember that .arduboy files can contain multiple .hex files for different targets.

Obviously it’s going to mean more work rewriting the system, but in the long term it would be simpler.


I’d like to point out that .arduboy files already have this capability.
There’s a separate url field and a sourceURL field.

(By the way, I just updated the links from the old .arduboy file guide to point to the ‘museum’.)

One thing I’ve been thinking about for a while but don’t have the know-how to pull off is to create either a GitHub repo or account/organisation that could use some kind of mechanism like web hooks to automatically pull in data from GitHub repos that host Arduboy games, acting like Eried’s collection but being more automated.

That way people could have their games included in the system by providing some kind of informational file and then requesting that the repo be tracked.

Basically it would be like how Arduino tracks libraries by having users provide a library file (I can’t remember if it’s the library.json or library.properties that Arduino uses) and then submit an issue to have their library tracked by the system.

With @joyrider3774’s discovery of using GitHub actions to compile, it would also be possible to automate the .hex generation to some extent.

1 Like

… with respect and gratitude to @Mr.Blinky and @filmote… it does seem we are in danger of re-creating the .arduboy format and @eried’s repository…?

Nice. It seems a lot of good ideas went into the format design.

1 Like

The CSV file has column headings embedded in it.

Unzip the arduboy files, parse the JSON file for 350 games? This makes having a CSV file (or a database) seem like a very good choice.

Anyhow that gets the data onto the screen. The beauty of the CSV approach is that you can create your own cart and save a copy of the CSV file on your own machine. Reloading the file allows you to add different or new games into your own curated cart and save that locally again.

The CSV file can be used to create a BIN at any time. You could even download my repo and use your copy of the CSV to create a BIN locally.

I would vote against any structure that has a file per game. As mentioned earlier, having that tucked away in a zipped Arduboy file is just inefficient. Extracting the JSON out to file system once when the game is loaded into the site could save the unzipping requirement but doesn’t remove the need to parse 350+ files.

If I was planning on doing anything, I wouldn’t choose any of these over CSV files. None of them have a ‘built-in’ validation mechanism and would just be trading one format for another with no gains. XML with an embedded DTD (not an XLST) is the only real self contained format but is useless unless people edit it within an aware tool.

If I was planning on doing anything, it would still be a database but I would still allow the persistence of the modified cart to a CSV file for local storage. I would also ensure it was compatible with the existing python tools.

But, I am not planning on doing anything at the moment :slight_smile:

1 Like

Changing subjects, I did add a search match count. It helps when you search for items that may not be visible due to the extended width of the screen. Its just an indicator …

3 Likes

Wow. Nearly 10% from PPOT… and always :100:% quality!

2 Likes

Definitely! Id actually started with a much longer list but you ended up adding a lot of them before i got around to it :laughing: Didnt see these on there yet though:

Octet night
1 Bit Rogue
Forest Trader
Arena

Ohh awesome, thanks! Glad i asked lol

1 Like

The idea of using the CSV is simplicity and lower the threshold of editing the file as a plain text editor will do.

You’d have to type a lot more then a single semi colon to enter a data field in JSON files and because of it the chance of making a typo and cause errors is much higher.

Technically they’re just text files :stuck_out_tongue:

Awesome.

I already had Octet Night on my list to add. The others I have include:

Robotfindskitten
Nightmare Park
Halloween Harry '86 < although this is an unfinished WIP
Almost Pong
Pocketchi
Curve Ball
A:/Roshambo
Toyoshiki Tiny Basic
VT220 Serial Terminal Emulator
Pixel Portal Game

One that I am considering dropping:

IsThisLoss

2 Likes

Just added:

  • Nightmare Park
  • JCGOL (John Conway’s Game of Life)
  • Arduboy-2048
  • Tiny 2048
  • Crates <<<<< This looks great!
  • robotfindskitten
  • Octet Night
  • Forest Trader << with some dodgy graphics of mine
  • 1 Bit Rogue
  • Arena

@CatDadJynx All your suggestions are on. Still got a few of mine to add.

2 Likes

just an idea but if anyone is bored you can search for “arduboy2.h” on github and check the code section, Then skim through the code and we could potentially find “new” games / tools repo’s if people uploaded them to github but never mentioned anything about them on the forums here or not listed on the FX image

you come across all sorts of things i have not seen mentioned here, i’m not saying its all worth putting it on the cartridge though as some things could be tests or incomplete or just small tech demo’s.

here are some examples:

https://github.com/poevoid/arduboyTrivia/ (simple 2 player trivia game)
GitHub - Ryutaro-Hayashi/knight_mare: C言語とArduboyでプログラミングのお勉強 (not sure it’s in another language)
GitHub - spacebruce/Arduboy-Chip8 (a chip 8 emulator for arduboy it would seem)
GitHub - jblebrun/8boy: A S/CHIP-8 emulator for Arduboy, with utilities for creating game collections (another chip 8 emulator)
GitHub - pmwasson/wordable: Wordle for the Arduboy
GitHub - DLeinHellios/arduboy-phos: Another space shooter for the Arduboy game system
GitHub - HokuHakase/MathGame: A puzzle and math game for Arduboy.
GitHub - poevoid/Evolution: Evolution is a spore-inspired demake for the Arduboy & arduboy homemade dev boards

thats only a handfull i picked from the first 15 pages (out of many more pages) but it would seem (to me at least) there are still things to be discoverd that was made by people. Do note i only checked if the titles existed in the whole enchilda set i did not actually search the forums here for it to see if any of them were mentioned and you might also need to compile the sources yourself if there was no release or hex file in the repo.

2 Likes

それは日本語だろう!

Being able to read it doesn’t really help.
The ‘About’ area just says “programming study with Arduboy and C language”.
(Which should be C++言語, not C言語.)

The comments don’t say much that can’t be inferred from the code usage, and it looks like it was probably unfinished anyway.

I expect quite a few of these will be unfinished games.

Some of the names I recognise (e.g. @poevoid and @pmwasson have accounts here).

DLH is an interesting one. I’ve never heard of him but he’s made a few Arduboy games on his website:
https://dleinhellios.com/projects/index.html

2 Likes