I would think a blazer, a nice shirt with no tie and a pair of slacks would be fine. I've seen a lot more casual, and a lot of people will tell you that here, but semi-formal is not the same as casual.
Casual nights a nice pair of slacks and any shirt with a collar, like a polo would do fine. If it is smart Casual they sometimes request a sports jacket or blazer. You could check online to see what your cruiseline expects.
Princess has done away with semi-formal and informal. Their dress code is formal and "smart casual", this applies to all the dining venues except Horizon Court buffet, the bistros and room service.
Most of the men will be wearing dockers type pants with a collared polo-type shirt or a button-down short-sleeve sports shirt, and a nice pair of casual shoes.