I suppose I'll add some of the things I've tried. Please let me know if you know why this hasn't worked.
There's a comment at the top of spawn_bounce_sprite.asm that says
;Input: A = Bounce sprite number, X = $9C value, Y = bounce sprite direction,
; $02-$03 = Map16 number (only if $9C or X is $1C or larger)
So I interpret it as: If you set X to be greater or equal to $1C, you can set scratch RAM $02 and $03 to the high and low bytes of the Map 16 tile you want to appear after the bounce animation.
So, my chosen map 16 tile being 2F6, if I try this:
...the game crashes when I hit the block. But, thinking that if I just store the value directly into $03 it will know to put the high byte in the previous address, if instead I try this:
Now there's no crash, but there's no bounce sprite either. So let's say I forget about the whole $02 and $03 thing, and why not just use the change_map16 macro after spawning the bounce sprite? So I try this:
LDX #$00 ; back to 0
Now it behaves just like it was in the beginning, after the bounce sprite does its thing, the block just becomes an invisible solid block. It's as if the whole change_map16 thing weren't even there.