In order to get this sprite to display on the PCE, I would normally give it pattern values in offsets of 0x40. Here, it's a pattern value offset of 2. That does not make a whole lot of sense to me.
eris_sup_spr_set(0);
eris_sup_spr_create(0, 0, 0, 0);
eris_sup_spr_set(1);
eris_sup_spr_create(16,0,2,0);
eris_sup_spr_set(2);
eris_sup_spr_create(0,16,4,0);
eris_sup_spr_set(3);
eris_sup_spr_create(16,16,6,0);
but anyway...
_eris_sup_spr_ctrl:
mov lp, r17
setup_addr r20, r19, r18, 3
mov r6, r16
mov r7, r15
mov r19, r6
mov r18, r7
jal _eris_low_sup_set_vram_write
mov r19, r6
mov r18, r7
jal _eris_low_sup_set_vram_read
mov r19, r6
jal _eris_low_sup_vram_read
mov r10, r7
and r16, r7
or r15, r7
mov r19, r6
jal _eris_low_sup_vram_write
mov r17, lp
jmp [lp]
I am not sure how similar this is to the original C code I wrote, as this is nineteen flavors of Greek to me, but in theory, the only purpose of the function is to modify the high byte of the fourth word of the SATB entry.