Ahhhhhh that's satisfying. Just optimised the living shit out of my virtual text rendering code.
Dungeons of Freeport SDL version now runs at the right speed. Was an easy fix too.
I'd done the text rendering in a QUICK and nasty way just to ensure it worked. It re-rendered each character every frame, which is adding and removing a LOT Of sprite nodes.
Next on my to-do list, probably not all going to happen this afternoon:
turn on spreading the pathing routines over multiple frames, ideally before the player takes an action, to reduce the CPU bump. For ease early on I had the pathing routines as blocking, just doing a single path in a block even if it took a good chunk of time.
re-implement the 'text field input' routines that are needed for UI stuff