Build your own Arduboy FX Cart Image

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

I’m trying to add my game to a cart image, but when I add my hex to the upload form (along with a png and filling out all the fields) and try to submit, it flashes a yellow error message “Invalid HEX file selected” at the top. Am I doing something wrong? The hex file loads fine on my Arduboy and in the emulator.

Can confirm, evolution is far from playable or complete, it’s joined the “I’ll get to it eventually” pile of doom. Still got the notes for the plans though, might take pics and put them in the readme or an ‘assets’ folder.

So after some digging I think the problem is that the uploader expects an empty mime type, but for some reason my browsers are all identifying it as text/x-hex. Not sure why. Also not sure how to work around it, other than use a different computer I suppose.

image

Do you mind sending me that Hex file in a PM so I can have a look at it?

Is it ready to add to the cart? If so, I will add it in for you if you give me all the details too.

Out of curiosity, what OS are you using when you compile it / when you load it? (Assume probably the same).