As for the firmware, SM has an official set of instructions on how to compile the SM 2.0 firmware using PlatformIO on their GitHub (here), but I don’t have the knowledge or experience to know if this can be adapted to the original firmware.
Finally, I tried looking into what you mentioned about reverse engineering the controller, and the best I could find was this:
It’s not exactly what you described, but still has some info on the chips present on the controller.