Make the sparkle animation not necessarily synchronous with its related messages. Instead, when the core game engine calls the sparkle function, it informs the windowport that it should display a sparkle, and then proceeds as normal. The windowport may decide to play them immediately (as is currently enforced) or it may decide to defer playing any sparkles until just before the next time the player is prompted for input.

The primary use case for this is with multi-line windowports such as the curses interface, in which one might be on the Plane of Fire and get several messages like “foo stepped on a fire trap but is unharmed”, each with its own sparkle. Under the current system, the game must wait until each sparkle is finished before printing the next message. This implementation would allow the game to print all the messages at once, and then display all the sparkles one by one, or even simultaneously if it wants to.