dotMG (formerly Arduboy Cartridge Edition)

[See Updates below for pictures!]

I used to run modmatic.io (now shut down), and one of my biggest regrets is that I never got to produce dotMG. It hurts my heart to think about because I loved that project so much.

I’ve always loved the concept of game cartridges. Sure, you can fit lots of games on a flash chip, but there’s just something about the feeling of popping in a new game.

Rather than pursue another commercial project, I recently decided to design a soldering kit with my two boys based on Arduboy and dotMG (though much much simpler than the original dotMG, which had a SAMD51 and large color screen). It will essentially be a Pro Micro-based Arduboy clone, but it will have the Pro Micro housed on a swappable “cartridge”. Some benefits of this will be that 1) programming is easy (vs programming a flash chip), as it will be like any other Arduino; and 2) there will be less wear on the program flash than with a flash chip + bootloader combo; and 3) No boot loading time; 4) pure joy and nostalgia.

Currently I’m looking at using one of the nice large 2.42” OLEDs like this one, but we’ll see.

Another thing I’m excited about is that I think I’ll make a couple of styles for the main board: DMG style vertical/traditional, and another GBA horizontal. Both will be compatible with the same cartridge boards.

Both layouts will be accompanied by laser-cut acrylic shells, held on by nylon standoffs and screws.

I’ll also probably put an analog battery indicator on it by hooking the LiPo to a 3.3V zener diode and LED in series. This will make the LED fade as it nears 3.3V, then shut off when it goes under 3.3V and it’s time to recharge.

Not sure about the RGB LEDs yet, but am leaning towards leaving them off for other uses (see next paragraph).

Lastly, for extensibility, I’ll break out unused pins onto a header, a nod to the “EXT” port on the old DMG :slight_smile: Would be a nice way to add a crank like https://play.date, or other sensors/extensions.

And, of course, the goal would be for this to be a beginner-level through-hole soldering kit.

Meta: Sorry for the website link. Not trying to self-promote. The company is shut down, and I’m just sharing it for reference as another piece of inspiration for folks. :blush:.

Updates

Latest KiCad files, gerbers, parts list, and firmware can be found at: https://github.com/menehune23/arduboy-dotmg

I’ll keep this section up to date with the latest pics too (most recent first).

8/8/2021: The dotMG Advance build came out fantastic!





7/18/2021: Finalized the GBA-style design! Will order in a week or so, hopefully. Files added to repo.

Also, just for fun, the original in white…

7/11/2021: I’ve renamed this project to “dotMG” (and “dotMG Advance”) per the poll later in this thread! I updated the PCBs with the logo :slight_smile:. I also took the chance to add a label area to the cartridge PCB, so you can mark them with a sharpie or pen.

Project is now located at: https://github.com/menehune23/arduboy-dotmg, though GitHub should redirect from the old project name too (arduboy-ce).

Images below:

logo




3/26/2021: Just built the latest iteration. A few minor tweaks and I’m calling this one good. I’m really digging how that screen border came out! :ok_hand: And the updates to make carts easier to take out worked out awesome. :muscle: On to GBA style next…

3/7/2021: Made some tweaks to the game cart and main board, mainly to make changing carts easier. Also, made the screen cutout a bit more stylish (rounded corners and accented bottom-right corner):

2/23/2021: First build is looking great! Will make a few minor tweaks but pretty happy with it for a first run. Note: cart has breakaway tooth to stuff in connector for reverse insertion protection.

6 Likes

I think the SAMD is a good target. It can’t run .hex files can it, you have to recompile them for the new target with it’s own library and I’m sure sometimes you still get errors?

Hi @bateske, not sure about .hex files, and I did run into a few strange crashes on some games. Overall, went pretty well though. I will say the SAMD21 was much easier to work with than the 51, which felt overall more complex and brittle to prototype with.

That said, this project will use good ole 32u4 (Pro Micro) for maximum compatibility. It was fun to write a ton of custom firmware and port the Arduboy libraries (GitHub links are on the product page), but I won’t really have time for that this time around. It’ll be nice to have it just work :slight_smile:

some chinese company did this put 32u4 on a card for different games… or wait maybe it was attiny

Was it that thing that looked like a game controller? I saw that post on here somewhere.

it was made of laser cut acrylic

.hex files are just a plaintext means of encoding binary data (a bit like Base64, but slightly more complex), which in the case of an Arduino environment is almost always the data to be written to flash/progmem, which almost always consists of a large chunk of machine code accompanied by some read-only data.

The SAMD series uses the ARM ISA, as opposed to the ATmega series which uses the AVR ISA*.
Programs written for either ISA are completely incompatible with the other ISA.
(In other words trying to upload a .hex containing AVR machine code to a SAMD board would be a horrible idea.)

However, if someone implemented an AVR emulator for ARM and the SAMD board being used had enough resources then theoretically a SAMD board could run an AVR .hex that way.
Otherwise you have to either recompile from source or come up with some kind of AVR to ARM translator that could convert an AVR .hex to something ARM could run.


* For those who don’t know: ISA in this context means instruction set architecture.

1 Like

@bateske Yeah that was the one.

@Pharap Makes sense. I figured it was something like that.

1 Like

We did some breadboarding over the weekend to prove out our connections. Here’s an initial cut at the cart board, taken from the dotMG cart layout and modified :smiley:

Also, thinking of naming the project “Arduboy CE” (for “cart edition”)

Front:

Back:

1 Like

Putting work so far up at: https://github.com/menehune23/arduboy-ce

1 Like

You’ll have to make sure that @bateske is okay with you using Arduboy in your device’s name.

True. Definitely wouldn’t use that if he’s not ok with it. Though I would wonder how it’s much different from other projects like “Arduboy Homemade Package” or the various “Arduboy Clone” projects floating around.

To your point though, “Arduboy CE” does sound a bit more official than those examples. Happy to rename if that’s the case.

It would mostly depend on if it’s just a “pet” name that you only use personally, vs., say, putting the name on a PCB, schematic or other documentation that you release publicly.

It’s basically whether it might be conceived to be an “official” Arduboy product.

Again, it would be up to @bateske to give his blessing.

1 Like

So long as it isn’t being sold you can do whatever you like (so long as it isn’t defaming or disparaging)

I still need to write a fair use clause…

1 Like

Sounds good. If I ever decided to sell it (not likely), I’d probably just change the name. I also put a non-commercial clause in the license on GitHub.

1 Like

Hey all, I’m running into a couple issues with the 2.42” SSD1309 OLED that I bought (the common one from diymore.cc).

  1. Not sure if it should run on 3.3 or 5V. Picture quality is a little strange closer to 3.3V. Even with 5V some pixels look a bit “grayish”.

  2. The screen hums, louder closer to 5V.

Any thoughts or previous experience with this screen? I really like the size otherwise.

What is the support circuitry and how are you setting the registers up during your init sequence? Most of the bright/dull issues I have seen in my limited experience are often improved by different charge pump register settings etc.

With the larger oleds they often run a separate boost circuit on the module PCB to generate an external eg 12v (thereby negating the need for the charge pump options). Is this the case on your module and if so, how clean is the output from that regulator?

Last thing I can think of at this stage is that the SSD1309 datasheet probably recommends some values for the supporting passives eg capacitors and resistors for different power modes (internal charge pump generated power supply or external 8-14v power supply, in addition to the 3.3V). Are the passives’ values on your module (particularly the feedback current resistor that I seem to recall oh these displays) about right for the support circuit and power mode you are using?

Thanks for the detailed response :slight_smile:. I’m not using any additional support circuitry outside of what’s built onto the module. I don’t really know the details of the module components unfortunately. I’m using @Mr.Blinky ’s homemade Arduboy package, which includes an option for SSD1309 driver chips.

They usually run on 3.3V. but there are some that are 5V. Those can be identified by having two 3 pin SOT23 voltage regulators on the PCB.