I haven't put a scanner on it (I don't have one, just a code reader), but because it runs fine when cold and only idles poorly when warmed up, wouldn't it be more likely be related to a temperature sensitive item (O2 sensor or cats), rather than a spark issue?
When cold, it's running in open loop. This means it's running off of a "base map" of sorts and ignoring inputs from various sensors. When a certain temperature is reached, it switches to closed loop and begins making fuel and spark adjustments based on sensor inputs.
You might have a faulty sensor that is ignored when in open loop. Then, once warmed up and in closed loop, the PCM starts making undesired adjustments based on that faulty sensor's output.
If the cats were clogged, this would mechanically affect the drivability since it would limit the airflow through the engine. I'm not one to condone hard throttle before an engine is fully warmed. But, if you know a point (as far as throttle input) where it acts up, it should do it in closed and open loop.
As the others have said, a scanner that shows live data would be a huge help here.
Of course, you could have both problems- faulty sensor(s) and the resulting clogged cat(s). A faulty sensor making it run rich (MAF, MAP, O2), but still within what the PCM accepts as a normal range could go unnoticed for a long time, slowly clogging the cats and/or fouling out an O2 sensor or two. The fouled O2 sensor not being able to accurately sniff the true content of fuel in the exhaust could make the PCM think the exhaust is lean and erroneously/unnecessarily add more fuel, exacerbating the problem.