I doubt it’s truly “suddenly”. These kinds of things always have a cause, meaning something must’ve happened or been changed to trigger this change. That something could be physical damage, something internal burned out, a software change (intentional or otherwise), etc.
Any suggestions we make will be based on assumptions, so we need to narrow it down to hardware or software first.
For us to better help you, please share your code (ideally via link to github or similar), and describe anything at all, no matter how small, that happened prior to this change. Was the robot dropped? Code changed? Wiring changed? Someone sneeze in the other room?
One thing I would try is bring up the Phoenix Tuner.
Select the Run Temporary Diagnostic Server.
Find the particular TalonSRX on your CAN bus.
Go to the Config Tab and select the Factory Default option.
Go to the Control Tab and run it in percent output. (you need to also be running the driver station besides enabling here).
Are you seeing the same behavior or is it behaving properly?
If it behaves properly. Close the Phoenix tuner and try running your code again. If your code has it now not behaving properly it is in your code. First thing I would look at is your calls to set up the TalonSRX. In fact, you can repeat the steps above except for resetting to factory defaults, if it runs the same as it does in your code, it is something with the configuration. You can save the current configuration to a file and then reset to factory default and save that to a file. Then you can compare them to see if something jumps out (e.g. did you set you nominal output to 1, so that once you get past the deadband, you are putting full power out).
If it didn’t work properly, then it is likely in the hardware.
Also make sure the aux pid stuff didn’t get enabled by mistake. We did that once when intending to use arb feed forward and it led to similarly strange behavior.