At Zama, Hannibal was hamstrung by having essentially 3 armies, all of different levels of proficiency. Carthaginian armies, due to the motley nature of the men that made them, needed time to become a good, cohesive force. If Hannibal would have met Scipio in Italy vs in Africa, I am confident Hannibal would have won. As I said on the other topic, Scipio wasn't stupid and wouldn't get himself in a situation where disaster was certain, but I am confident a battle would've taken place, and Scipio would've been defeated, but not spectacularly.
The differences between what Scipio had in Africa compared to what he most likely would've had in Italy comes down to cavalry. There wouldn't be any Numidians in Scipio's army to help counteract Hannibal's mastery of the cavalry fight, and at Zama that was really what tipped the battle in Rome's favor, the return of the cavalry and their charging into the Punic lines. Take away that charge, make it against the Romans, and the outcome might've been different. It must be remembered that when Hannibal's veterans went to blows with the Romans, the battle could've went either way, according to Polybius I believe.
I am the Carthaginian who became an angel, and surrendered his wings for a life on the sea of battle.
My magic screen is constantly bombarded with nubile young things eager to please these old eyes. This truly is a wonderful period in which to exist! - Terikel the Deflowerer