It is in fact doable, or at least, fake-able. This is key:
setanimation 0x0 0x1
1. Make a msgbox with Blue commanding someone to fly
2. Display the swooping Pokemon, and hide both you and Blue
3. Use the warp command to go to a different map, filled with black tiles
4. Have a level script to the talking part
5. Warp again to the next map
6. Use the swooping Pokemon animation to look like you're landing, in another level script
I have no clue what could be causing my game to do this. Anyone know what's going on here?
From the way it sounds, it seems like your game is hitting a loop or a road block when trying to display either the surfing Wailmer sprite or you in surfing mode, which the emulator handles by restarting. Are you using JPAN's engine? If it does, I'd make sure you're avoiding using variables 0x4054 to 0x4059, which are responsible for hero switching, and have given me problems when I use them.