Per documentation:
If frame is not specified or is
undefined, all frames will be added. Otherwise a single frame is used.
If you pass 2 for frame, the cursor will only contain that frame. That’s not a starting frame or anything, that’s the frame that will be used for the cursor.
Conveniently, it is probably what you have to do here - if your frames represent multiple cursors that you want to swap between, make multiple cursors out of those (and if the cursor contains several frames, there’s native_cursor_add_from_sprite_ext), and swap between those - swapping between already-created cursors is pretty cheap.