The LEGO Super Mario theme includes an intelligent brick that interacts with various other elements present in the sets:

enter image description here

There are several Power-up sets available that provide Mario with additional powers and alter his behavior in various ways. How does the brick interact with these power up packs to know when they are in use?

Here's an example power-up pack:

Cat Mario


The Mario element has six switches on the front:

Mario Element

The inside of the pants in the power-up sets include six plastic ridges that can be either high or low. They interact with the switches on Mario's torso in much the same way as the cuts on a key interact with a particular lock. The torso reads the pattern on the buttons to determine the power-up state. Here's an example showing the six ridges on the regular pants from the starter set and the ridges on Cat Mario:

Pants photo

The switches expect the following states for each of the pants elements (bits are read from left to right when looking at Mario):

 Bit Pattern | Power-up
 000000      | None
 001100      | Propeller
 010001      | Cat
 010010      | Fire
 100001      | Normal
 100010      | Builder

Power-ups can be emulated by holding in the correct buttons. The play experience won't be great, but this could be used to see what a power-up does if you don't own it.

There's more detail on exactly what is read and presented via the Bluetooth interface on Shinichiro Oba's Github.

It's worth noting that the included hats are for decoration only. They have no impact on behavior, and there is no mechanism for them to be detected or identified.

| improve this answer | |
  • 11
    And here I was thinking "oh, they're probably using NFC, that's pretty cool…" Nope. Low tech FTW. :) – Ilmari Karonen Sep 11 at 15:27
  • 2
    @DarrelHoffman I would assume symmetry. – Aaron D. Marasco Sep 11 at 18:30
  • 2
    My kids had a train with blocks that had similar (each block gave a different pattern). Then they started holding down with their fingers different combos until they found non-Roman letters and then even a combo that locked it up. – Aaron D. Marasco Sep 11 at 18:31
  • 5
    @DarrelHoffman: I suspect they're trying for an N-out-of-M encoding (2 out of 6, in this case). That way, your Builder Mario won't suddenly turn into Cat Mario just because his pants are a little loose and one of the switches doesn't get pushed all the way in. (Admittedly, they could've still used e.g. a 4 bit parity code to achieve the same result, but 6 bits still indeed leaves more room for expansion, and maybe they just got a good deal on six-switch arrays or something.) – Ilmari Karonen Sep 11 at 18:35
  • 5
    @IlmariKaronen I've confirmed that the bit value for the propeller pants is 001100 and opened a PR to change the hex value to 0C. – jncraton Sep 11 at 23:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.