I asked for an Arduboy for my b-day (tomorrow), mainly to play around on but also to possibly develop for, although admittedly I’m more proficient in Python than I am anything C. After looking over the website and forums, I’m feeling a little discouraged because I feel like I may have gotten started at the end of the Arduboy’s lifetime, so developing for it may not be worth the effort. Am I wrong? If even I am, I still think I’ll enjoy playing the games already made by the community, so it’s still definitely worth owning imo…
Its never too late and its a good thing in a way because the libraries are better than it was at the beginnings.
The other thing is that you should do thos for you first anyway, so it should not even matter if its late in the Arduboy’s life.
Its not like if you would sell games for it anyway
There are new people getting into it all the time. There will be a game jam soon and those are always fun to participate or see what developers create.
At the end of the day the Arduboy console is intended to be what you make it, it’s there for your imagination.
I’m the creator of the darn thing and I didn’t get around to making a proper game for it until 4 or 5 years later.
But you’re right things are a little more quiet these days and I suspect that it’s for the reasons you mention. The catalog of games is already pretty satisfying and many types of games may already exist so it’s more challenging to find a new type of game to expand the catalog.
At any rate, welcome!
I think its the perfect platform to learn to make games on myself - not too complex that you never finish a game yet with enough options to make the games interesting and fun. I wouldn’t say the platform is getting old as it was retro to begin with.
If you are serious about learning to program in C++ then this is a good platform to start on. As @Vampirics said, you are not making games to sell but instead pushing yourself to learn. Have fun, ask questions and you will see this is a community that will help you along the way.
I don’t know what counts as ‘end of life’, but Arduboy units are still being produced and sold, and people are still developing games for it, which seems ‘alive’ enough to me.
The only thing you might have ‘missed out’ on is being the first to write a particular kind of game. But it doesn’t matter if you end up making a game that someone else has already made, the journey is more important than the end result.
For the record: Arduboy uses C++, not C.
They’re two different (though superficially similar) languages.
C++ is a very different language to Python, but some fundamental things apply to all ‘procedural’ languages. E.g.
while loops, functions and variables.
Sorry, my sentence was a bit ambiguous. What I meant was that I’m better at Python than any C language (C, C++, C#, etc.). I didn’t mean to group them all together if they are in fact quite different.
Though now that I think about it, I wouldn’t say that I’m completely in the dark, as I’ve played with arduinos for a number of years and I can, at the very least, read already-written code and modify it for my own needs. I can also write some code from scratch, but nothing ever too terribly complex. Not yet, at least.
I’ve got my unit a couple of days ago =) And yep, I feel your desire to learn - cause my own C++ courses were a long-long ago in a galaxy far-far away =)
I don’t think that the “lifetime” is applicable to the ardyboy in the same sense, as it relates to ‘mainstream’ game devices - it’s more of an experimental development platform, just like Arduino boards themselves.
Also, although the core community is relatively small, there are new exciting tools and projects - and new people still buying a console and getting into it.
And the most important thing, arduboy still has things to desire, and the potential to become something bigger - for example, it could become a “real fantasy console” - if we figure out a way to make some Bitsy or Playdate Pulp analogue for it.
Despite the similar names, they are in fact quite different.
Syntactically they are similar in that they all use curly braces and share certain concepts and keywords, but they all have (very) different rules and feature sets, and they were all designed and developed by different people (or groups of people).
C and C++ are quite similar for historical reasons (C++ started life as ‘C with classes’), but C++ has many more features than C.
Meanwhile C# is actually closer to Java than it is to either C or C++, and closer to C++ than C.
The bottom line: it’s typically better to group languages by their history or the features they share than rather than by how similar their names are.
If you’ve written code for an Arduino device before then you’ve already written C++ code - Arduino uses C++. (Albeit with an extra pre-processing stage to give
.ino files some weird extra rules and translate
.ino files into
I completely agree.
For ‘mainstream’ consoles, there comes a point where the consoles stop being manufactured and the publishers stop publishing.
You could argue that’s the end of the console’s ‘lifetime’, but practically speaking people build emulators and make homebrew, so I’d argue that even the ‘official’ end is not the ‘true’ end.
In the Arduboy’s case, even if they stopped making the parts needed to build ‘proper’ Arduboys (mainly the AVR32u4 CPU and SSD1306 screen), the Arduboy2 and Arduino libraries would live on.
I don’t think a GUI-based editor is necessarily needed for something to be classed as a ‘fantasy console’.
The original ‘fantasy console’ was the CHIP-8, and that was all assembly-based.
The biggest problem with porting Bitsy is its lack of documentation and/or specification.
With the FX, something Bitsy-like is certainly possible though.
A GUI-based editor isn’t a necessity, indeed, but it can make the system more “casual” and accessible to get some additional popularity and, possibly, interesting projects from people who are a good designers but a little weak on the programming side.
The interesting coincidence is that I was thinking about CHIP-8 just recently - it’s a system with128x64 display, it is powered on assembly - and, as I remember from my C++ lessons and practice - you can just interpret assembly “inside” C++ code. And, the most interesting - there are some GUI-based editors for CHIP-8! So it looks like a very promising direction.
If you haven’t found it already the lessons by @crait are a great way to get started!
Without meaning to drag this too far off topic…
The problem with CHIP-8 is that it assumes all memory is modifiable (i.e. RAM, not Flash), and the Arduboy has less RAM than it expects.
Theoretically if you can figure out which bytes of RAM a program modifies then you could do some kind of mapping to give the program the RAM it needs, but that’s incredibly difficult.
I say this from experience...
The best I managed to get was to calculate the potential addresses that each instruction might modify and thus build a set of possibly modified bytes. The problem is that the set of possibly modified bytes is often 90% of the RAM or more, which makes it an almost useless metric.
I’m convinced that figuring out which bytes are actually modified is equivalent to solving the halting problem.
It might be possible to create an assembler/compiler that is smart enough to divide the program up into ‘read-only’ and ‘read-write’ sections, which could be mapped to progmem and RAM respectively, but such an assembler/compiler wouldn’t necessarily work with existing CHIP-8 games (and would be useless on pre-compiled games).
CHIP-8 assembly is generally assembled into bytecode before attempting to run it.
Thinking about it, it would be possible to create a CHIP-8 like system that runs on Arduboy and is aware of the ROM-RAM distinction.
However, the big downside is that it wouldn’t run existing CHIP-8 games, people would have to either write new games or port existing ones.
@mr.blinky said something about adding external ram to support it?
Yes, it’s easy to add an SPI SRAM chip (Are you ready for modchip 2.0 ?) In my current design a 23LC1024 (128K-byte SRAM chip) is connected just like the flashchip and SCL is used to control the chip.
Ah too easy. (I wonder what that all means )
Just think of it as a 2nd FX chip that is RAM instead of Flash.