Disassembly Of Sprite 47. It allows you to set the speed and range of movement.
Request from sping bot.
Tested with: Lunar Magic 3.21, PIXI 1.32, SA-1 1.32, Snes9x 1.60, bsnes+ v04.
The sprite works fine for the most part, but I decided to reject it for a couple of issues that should be easy to fix.
The first is that the sprite doesn't work properly on lorom on accurate emulators/console. This is because you're not waiting enough cycles for the division registers. You should wait 16 cycles before reading from $4214 (actually, only 13 are required, as 3 are taken up by part of the LDA.w instruction before the register gets accessed), but you're only waiting for 8. This doesn't cause issues on Snes9x because it doesn't properly emulate these kinds of register timings. While this would be an easy fix on my end, I'm rejecting to encourage you to always test your resources on different kinds of emulators.
The second issue is the init routine on SA-1 is rather weird on the coding side. Doing "LDA #$EA01" while on 8-bit Accumulator mode, while it works fine in the end (as it's run as "LDA #$01 : NOP") is bad practice, and there's a lot of other unnecessary instructions here: "LDA #$00 : PHA : ... : PLA : STA $2251" is uselessly convoluted, as you can just do "STZ $2251"; "STZ $2252" is unnecessary as you're setting $2252 a couple lines later; the 7 NOPs before reading from $2306 are not all necessary, as you only need to wait for 5 cycles (although in practice you just need to wait 3 cycles).
As a reminder, if you want this sprite to be marked as a disassembly, you should include an unedited disassembly of it too, together with the customizable version. If you don't want to (or don't have the original file anymore) it's fine, it just won't be labeled as such when accepting it.