While it seems good, there are a couple of things I'd like to point out:
- JSL'ing isn't very needed, you could simply use JSR or better, put the routine there. Going for the fastest option is always the best thing you could do in SNES.
- The DMABUFFER routine isn't very well optimized for SA-1, you're always adding an offset ($74BC) to make sure that the BW-RAM destination is always $418000 (plus $0200 per upload) because before calling the routine the code adds $0B44, which is the base address of dsx's sprites ($7F0B44).
- And lastly, correct me if I'm wrong, but wouldn't all of these SA-1 transfers would upload everything to $418000 without moving the destination address and without taking into account Dynamic Sprites slots?
Code LDY #$80
STZ $2238
STY $2238
LDY #$41
STY $2237
Every transfer has that as destination address, unless I'm misunderstanding SA-1 DMA and it actually works like that.
Good work on porting it, though.