I should have clarified that statement with the qualifier: from the perspective of those INSIDE the simulation, that simulation did not exist before the program booted. The maximum speed at which a simulation can run is limited by the clock rate and other architectural constraints of the processor. There is a maximum speed at which the simulation can happen. This simulated speed or passage of time within the simulation as it appears to the entities within the simulation is entirely up to the programmer, but will be less then the maximum. The programmer of the simulation can often choose the hardware requirements as well.
Simulating a frictionless pool table without any parameters that those inside that simulation can change is still under the control of the programmer. It would indeed be a boring simulation.
As for the speed of light in our world, we know that it is a maximum limit, but nobody has any idea why that particular limit was chosen. That was a decision the programmer made and he never told us why He chose that particular speed we observe.