Dr. Robotnik's Mean Bean Machine Disassembly

Discussion in 'Engineering & Reverse Engineering' started by RadioTails, Oct 20, 2021.

  1. RadioTails


    Just to mention that Neto actually released his own Dr. Robotnik's Mean Bean Machine Disassembly this year. While that one is impressive:
    - I'm not a fan of how the disassembly is laid out.
    - It uses Snasm68K instead of Asm68k, which means it only works on 32-bit machines (although I did convert it myself)
    However, some of the data has been labelled better, which I have used in this disassembly.

    Anyway, back last year, Ralakimus contacted me that he was working on a Dr. Robotnik's Mean Bean Machine Disassembly and shared what he was working on. Ralakimus sadly can't work on it any more, so I'm going to carry on with improving it and will report any findings.

    I have uploaded a current version to GitHub: https://github.com/radioshadow/Dr-Robotnik-Mean-Bean-Machine-Disassembly
    You can compile the rom, and making changes is very easy. Just beware that there is some data that is currently unknown.

    The settings.asm allows you to make some quick changes:
    - Puyo Art uses Nemesis Compression (big hanks to Neto for the Puyo Compile decompressor)
    - Region free the rom (will run in PAL, but only music is optimized)
    - Change how the region lock works.
    - Change how the checksum works.

    Now the main loop code is located at: game > bytecode_game.asm
    What's interesting about this part is it uses byte-codes instead of 68000 code (a list can be found here: https://info.sonicretro.org/Dr._Robotnik's_Mean_Bean_Machine/Technical_information#Bytecode). I will produce a list on want to enter for each code. It's also possible to add your own.

    At around hex 3316, I found this data that controls the frames that Has Bean uses (the size of the sprites is stored separately).