Coder Social home page Coder Social logo

lego-mario-reveng's Introduction

Reverse Engineering of LEGO Mario, Luigi, and Peach

Overview

LEGO Mario as BLE Device

LEGO Mario is a BLE device which supports LEGO Wireless Protocol. It has six input/output devices as follows:

  • Port 0: 0x47 Accelerometer, Gesture?
  • Port 1: 0x49 Color Barcode, RGB Color
  • Port 2: 0x4a Pants
  • Port 3: 0x46 Events, Debug, and something
  • Port 4: 0x55 ???
  • Port 6: 0x14 Voltage

Color Barcode

Each color barcode is drawn with five out of nine (eight?) colors. The first two lines are always green and red as header part. The other three lines are data part. The data value can be from 0x01 to 0xd2. That means there are 0xd2 = 210 (= 7 * 6 * 5) patterns.

Pants

Each pants has a unique 6 bit code. The pants sensor at the bottom of LEGO Mario can detect it physically.

  • e.g. The normal Mario's pants is 100001 = 0x21.
  • See details

LEGO Wireless Protocol

Manufacturer Data

Example: 97 03 00 43 03 ff ff 00

  • System Type and Device Number:
    • 0x43 LEGO System - Mario
    • 0x44 LEGO System - Luigi
    • 0x45 LEGO System - Peach
  • Device Capabilities:
    • 0x03 Supports Central Role, Supports Peripheral Role

Hub Properties

  • 0x03 FW Version: 5.0.00.0000
  • 0x12 Volume: 0 - 100

Port Information [0x43]

Port ID IO Type Capabilities Input Modes Output Modes Possible Mode Combination
0 0x47 Logical Combinable, Input 0, 1 - [0, 1]
1 0x49 Logical Combinable, Input 0, 1 - [0, 1]
2 0x4a Input 0 - -
3 0x46 Input 0, 1, 2, 3 - -
4 0x55 Input, Output 0, 1 0, 1 -

Port Mode Information [0x44]

Port ID Mode Name RAW Range PCT Range SI Range Symbol Mapping Value Format
0 0 RAW 0 - 100 0 - 100 0 - 100 cnt Supports NULL, Discrete 3 * 8 bit
1 GEST 0 - 10 0 - 100 0 - 10 raw Supports NULL, Discrete 2 * 16 bit
1 0 TAG 0 - 10 0 - 100 0 - 10 idx Supports NULL, Discrete 2 * 16 bit
1 RGB 0 - 10 0 - 100 0 - 10 raw Supports NULL, Discrete 3 * 8 bit
2 0 PANT 0 - 63 0 - 100 0 - 63 idx Supports NULL, Discrete 1 * 8 bit
3 0 CHAL 0 - 65535 0 - 100 0 - 65535 na Supports NULL, Discrete 2 * 16 bit
1 VERS 0 - 255 0 - 100 0 - 255 na Supports NULL, Discrete 4 * 32 bit
2 EVENTS 0 - 65535 0 - 100 0 - 65535 na Supports NULL, Discrete 2 * 16 bit
3 DEBUG 0 - 65535 0 - 100 0 - 65535 na Supports NULL, Discrete 4 * 32 bit
4 0 FS Code 0 - 65535 0 - 100 0 - 65535 na Supports NULL, Discrete 1 * 16 bit
1 Events 0 - 65535 0 - 100 0 - 65535 na Supports NULL, Discrete 2 * 16 bit

lego-mario-reveng's People

Contributors

bricklife avatar danieldabate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lego-mario-reveng's Issues

Ripping sprites and textures from Lego Mario/Luigi/Peach

Not an issue, but yes a request: being able to extract sprites/textures that are only visible/usable on their chest, like flag animation among others.

I know the app has similar sprites, but are not equal and they aren't animated as they show up in the toy itself.

Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.