I originally worked with BX301, and didn't notice that JR55's dump was different; BX301 outputs a byte for 4 clocks, while JR55 outputs a byte for 2 clocks. The SM510 datasheet says "the system clock has a frequency of one second that of the oscillator frequency". I think that's a mis-translation of one half, which matches what JR55 was doing. The SM511 has a selectable 8.192/16.385 kHz system clock which defaults to 8.192 after ACL. That matches what I see with BX301.

I dumped JR55 with 4 clocks per byte, so I was sending doubled-up opcodes and then missing half the data. That doesn't explain why S2-S8 weren't working, though. I assume that was due to some kind of damage.

ML102 also outputs a byte for 2 clocks, so I expect it is also an SM510.

Do you know the process of choosing the 16kHz clock? The datasheet just says it "can be selected by instructions", but I didn't see anything obvious in the instruction set.

I looked through the other SM5 chips in the 1990 and 1996 databooks, and there's only one other with the same pinout; SM3903. It looks like that's identical to the SM510, but using the R outputs for a remote control signal instead of a buzzer. I'm not sure anything's different about the chip itself. The datasheet is a copy of the SM510 datasheet with "buzzer" replaced with "remote", even keeping the same typos. So checking the number of clocks per byte should tell me if a game has an SM510 or SM511.

I will check over everything some more and post the dump of ML102.